memo.txt

教えていただいたこと、勉強したことのメモです。

ユースケースを教えてもらった(2)

ICONIXユースケースをやりましょう」

ユースケース駆動開発実践ガイド』に沿って教えていただきました。

ユースケースモデリングガイドラインのトップ10(p58~68)

システムの使い方について

× 指示的に記述された文

ユーザーは、パスワードを使った認証方式でログインできる。

○ 叙述的に書き直した文

ユーザーはユーザー名とパスワードを入力して、「ログイン」ボタンをクリックする。
システムはユーザー名からユーザーの情報を取り出し、パスワードをチェックする。
そしてユーザーはシステムにログインする。
  • イベントとその応答の流れとしてユースケースを書き、ユーザーとシステムの対話の両側を記述しなさい。
  • GUIプロトタイプや画面モックアップを使いなさい。

オブジェクトモデルの単語の使い方について

  • ユースケースは実行時の振る舞いの仕様であるということを忘れないように。
  • オブジェクトモデルの言葉を使ってユースケースを書きなさい。
  • 「名詞 - 名詞 - 動詞」という文の構造にしたがってユースケースを書きなさい。
【名詞】が【名詞】を【動詞】
  • ドメインクラスの名前を使いなさい。
  • (画面のような)バウンダリクラスの名前を使いなさい。

関係はinvokesとprecedesを覚えておけばいいです

A<<precedes>>B

ユースケースBの実行前に、ユースケースAが完全に実行される。

ログインする<<precedes>>読者レビューを書く

A<<invokes>>B

ユースケースBはユースケースAの実行期間中に実行される。

精算<<invokes>>カードで支払う

練習問題を解いた(p86~89)

練習問題3.1:著者で検索する

問題

基本コース:
システムは検索フォームを持つページを表示する。ユーザーは「著者」フィールドをクリックし、著者名(フレッド・スミスなど)を入力する。ユーザーは「検索」ボタンをクリックする。システムは検索フォームを読み取って著者名が一致する書籍を探し出し、一覧にして表示する。

代替コース:
一致する書籍が見つからない:
ユーザーに一致する書籍が見つからなかったことを知らせるページが表示される。

解答と答え合わせ

基本コース:
ユーザーは現在表示されている検索フォームを持つページの「著者」フィールドをクリックし、著者名(フレッド・スミスなど)を入力し、「検索」ボタンをクリックする。システムは検索フォームを読み取って著者名が一致する書籍を探し出し、「検索結果」ページを表示する。

ユーザー駆動で書かれていて本の解答より良いとほめていただきました。

代替コース:
一致する書籍が見つからない:
システムは一致する書籍が見つからなかったことを知らせる「検索結果」ページを表示する。

「「何も見つかりませんでした」ページが表示される。」が答え。
バウンダリオブジェクトを明示しましょうとのことなのでまあまあ。

練習問題3.2:ショッピングカートを編集する

問題

事前条件:
ユーザーがログインしていること
ユーザーがショッピングカートを編集するページを表示していること

基本コース:
ユーザーは変更したい商品に対して追加や削除を行い、「更新」ボタンをクリックする。システムはその商品の追加や削除を行い、更新されたショッピングカートのページを表示する。

代替コース:
ショッピングカートが空である:商品は削除されない。

解答と答え合わせ

事前条件:
顧客がログインしていること
一ステムがショッピングカートを編集するページを表示していること

え、事前条件とか書いてもいいんだとか思ってたらだめでした。ですよね。

基本コース:
顧客は変更したい商品の追加/削除ボタンをクリックする。システムはクリックされた商品の追加/削除を行う。
顧客は更新ボタンをクリックする。システムは更新されたショッピングカートのページを表示する。

「追加や削除を行い」を具体化するという方向はあってた。
追加はそもそもこのページではしないという仕様は知らなかったけど、追加と削除は分けて書くべきだった。

代替コース:
ショッピングカートが空である:顧客は商品を削除できない。

代替コースの不足分も書かなければいけなかったらしい。
以下の3つが書かれていました。

商品が見つからない場合
数量が0に変更された場合
負の値、数値以外が入力された場合

数量はテキストフォームらしい。

練習問題3.3:アカウントを作成する

問題

基本コース:
システムは「新しいアカウントの作成」ページを表示し、ユーザーは次のフィールドを入力する。
ユーザー名(ほかと重複しないこと)/パスワード/確認用のパスワード再入力/姓/名/住所(1行目)/住所(2行目)/都市/州/国/郵便番号/電話番号/メールアドレス。そしてユーザーは「登録」ボタンをクリックする。システムはユーザー名がほかと重複していないかどうかをチェックし、新しいユーザーアカウントを作成し、「ユーザーアカウントが作成され、ログインが完了した」旨を示すメッセージを含んだメインページを表示する。

代替コース:
パスワードと確認用パスワードが一致していない:
整合性が取れないというメッセージとともに、ページを再度表示する。
ユーザー名が重複している:
ページが再度表示され、違うユーザー名を選ぶようユーザーに促す。

解答と答え合わせ

基本コース:
ユーザーは表示されている「新しいアカウントの作成」ページの、ユーザー名(ほかと重複しないこと)/パスワード/確認用のパスワード再入力/姓/名/住所(1行目)/住所(2行目)/都市/州/国/郵便番号/電話番号/メールアドレスフィールドを入力して、「登録」ボタンをクリックする。システムはユーザー名がほかと重複していないかどうかをチェックし、新しいユーザーアカウントを作成し、「ユーザーアカウントが作成され、ログインが完了した」旨を示すメッセージを含んだメインページを表示する。

ユーザー名~メールアドレスまでの表現が詳細すぎるのを改善する問題でした。
明確にするとこうなるよねーってがんばって書き写したのですが、だめでした。
これらのフィールドを顧客クラスに定義し、「顧客アカウントで定義されているフィールドを入力する。」に書き換えるのが答えだそうです。

代替コース:
パスワードと確認用パスワードが一致していない:
整合性が取れないというメッセージとともに、ページを再度表示する。
ユーザー名が重複している:
ページが再度表示され、違うユーザー名を選ぶようユーザーに促す。