クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

要求の見つけ方と書き方

このレッスンのあとで: あいまいな希望を、確かめられる要求に書き直せる。

55分のレッスンコマンド5件PostgreSQL と PostgREST のラボ:ブラウザーで学ぶデータベースと REST API

要求とは何か

要求とは、システムに求められることを、はっきり書いた文です。要求があいまいだと、作る人と使う人で、できあがりの想像が食い違います。

大学の図書館が、本の貸出を記録するシステムを作るとします。「貸出がすぐ終わること」だけでは、何秒なら合格か、誰にも決められません。

このレッスンでは、あいまいな希望を、合格か不合格かを決められる要求に書き直します。

このレッスンのゴール

メモ

あいまいな希望を、確かめられる要求に書き直せる。

重要な言葉

ことばいみれい
ニーズ利用者の困りごとや望み貸出をもっと早く済ませたい
要求システムがすることや守ることを書いた文
機能要求システムが何をするかを書いた要求
非機能要求どれだけ速く、安全に動くかを書いた要求
テストできる合格か不合格かを、数や事実で決められる
ステークホルダーシステムに関わる人。使う人、作る人、頼む人

学生が入力するセルは、このプレビューでは空白です。

ニーズと要求は別のもの

ニーズは、人の困りごとです。要求は、そのニーズに応えるために、システムがすることを書いた文です。

要求は2種類に分けられます。機能要求は、システムが何をするかです。非機能要求は、速さや安全さのように、どう動くかです。

例: ニーズから要求へ

誰のニーズ要求種類
学生借りた本の返す日を忘れるシステムは、貸出ごとに返却日を記録する機能
司書同じ本を二重に貸したくない貸出中の本は、もう一度貸し出せない機能
司書混んだ昼休みも待ちたくない貸出の登録は、2秒以内に終わる非機能
学生他の人の貸出を見られたくない学生は、自分の貸出だけを見られる機能

学生が入力するセルは、このプレビューでは空白です。

テストできない言葉は要求にならない

「すぐ」「なるべく」「使いやすい」「十分」は、人によって意味が違います。これらの言葉だけでは、合格か不合格かを決められません。

直し方は、数を入れることです。または、見て確かめられる事実に変えます。「すぐ」は「2秒以内」にします。

動くシステムを見て要求を確かめる

要求は、紙の上だけでなく、動くシステムでも確かめます。ラボには、データベースと Web API があります。

まず、図書館の貸出の表を作ります。表の決まりが、システムの守る要求になります。順に Run してください。

貸出の表を作る

コマンド
PGPASSWORD=shop psql -h db -U shop -c "drop table if exists loans; create table loans (id serial primary key, member text not null, book text not null, due_days int not null default 14); insert into loans (member, book) values ('Sato', 'Databases'), ('Suzuki', 'Networks')"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

API に読み直させる

コマンド
PGPASSWORD=shop psql -h db -U shop -c "notify pgrst, 'reload schema'"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

貸出の一覧を読む

コマンド
curl -s -w "\n" "http://api:3000/loans?order=id"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

観察したことが要求になる

次の2つの Run は、システムに2通りの貸出を頼みます。1つは本の名前がなく、もう1つは返す日の数を書きません。

返事の番号を見て、システムが守っている決まりを言葉にします。それが、確かめられる要求の元になります。

本の名前がない貸出

コマンド
curl -s -w "\n%{http_code}\n" -X POST -H "Content-Type: application/json" -d '{"member":"Tanaka"}' "http://api:3000/loans"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

返す日数を書かない貸出

コマンド
curl -s -w "\n%{http_code}\n" -X POST -H "Content-Type: application/json" -H "Prefer: return=representation" -d '{"member":"Tanaka","book":"Algorithms"}' "http://api:3000/loans"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

よくある間違い

注意

要求は、画面や部品の名前で書けば十分だと考えがちです。「ボタンを青にする」は作り方であって、要求ではありません。要求は、利用者に何が起きるかを書きます。

例: 観察から要求を書く

観察したこと書いた要求
本の名前がないと、400が返る貸出には、必ず本の名前が要る
返す日数がなくても、貸出が作られ、14が入る返す日数を省くと、14日になる
作られた貸出の番号は、システムが付ける貸出の番号は、利用者が決めない

学生が入力するセルは、このプレビューでは空白です。

このラボとソースについて: PostgreSQL と PostgREST のラボ:ブラウザーで学ぶデータベースと REST API

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。