JavaのWebアプリは何から作る?要件から画面・処理・クラスを考える手順|確認問題の回答例

JavaのWebアプリは何から作る?要件から画面・処理・クラスを考える手順の確認問題の回答例です。要件から実装とテストへ、対応をたどって考えます。

問題1:コードにできない部分を確認する

たとえば、次の内容を確認します。三つに限らず、不明な点は仕様として決めます。

  • 商品の単価は固定か、商品ごとに違うか。どこから取得するか。
  • 数量は必須か。小数を認めるか。下限・上限はいくつか。
  • 送料は固定か。無料になる条件はあるか。
  • 結果に必要なのは合計だけか、小計や送料も必要か。
  • 不正入力で何を表示し、入力値を残すか。
  • 見積もりだけか、注文の登録や支払いまで必要か。

最初に数量欄と結果表示の画面案を作り、仮の値を入れて質問すると、具体的に話し合えます。たとえば「合計だけでよいですか」「数量21のときはどうしますか」と確認し、画面案を直します。仮の値や未確認のルールを確定した仕様として実装せず、単価500円・数量1〜20・小計3000円以上で送料無料などと合意した内容を、要件と期待結果に整理します。

問題2:実際に入力できる値で境界を確認する

単価500円なので、数量5の小計は2500円、数量6の小計は3000円です。5では送料300円、6では送料0円になり、無料になる条件が「3000円以上」になっていることを確認できます。もし誤って3000円より大きい場合だけ無料にしていれば、数量6のテストで気付けます。

数量は整数なので、小計は500円刻みです。この仕様では2999円になる数量を入力できません。数量5が境界の直前に入力できる値です。金額を自由入力する別の仕様なら、2999・3000・3001などの試験が適切になる場合があります。

問題3:DTO・リクエスト属性・JSPを順に確認する

  • QuoteResultのshippingFeeフィールドへ正しい値が入り、getShippingFee()で取り出せるか。
  • ServletがModelから受け取ったDTOを、quote属性へ入れているか。
  • 結果JSPが同じquote属性をQuoteResultとして受け取っているか。
  • 送料の表示箇所でgetShippingFee()を呼んでいるか。合計のgetterなどと取り違えていないか。

Model単体で送料300円が得られていても、その値が正しいDTO・属性・表示箇所を通っているとは限りません。数量5で実際の結果画面にも送料300円が出るところまで確認します。

問題4:数量の受け渡しと表示を追加する

この構成なら、見積もり結果のDTOに数量も含める方法が考えられます。たとえば次のように対応させます。

場所見直す内容
要件・画面案結果画面に「数量」の項目を追加し、入力数量を表示すると明記する。
QuoteResultquantityフィールド・getter・コンストラクタ引数を追加する。
QuoteModel検証したquantityを、新しいDTOのコンストラクタへ渡す。
QuoteServletquote属性で同じDTOを渡す構成は維持できる。他にDTOを直接newしている箇所があれば引数を更新する。
結果JSPgetQuantity()を使う数量の表示を追加する。
テスト入力5ならDTOと結果画面にも5が表示されることを確認する。DTOのコンストラクタを直接呼ぶテストも更新する。

これは設計変更の方針であり、本文の完成コードにすでにgetQuantity()があるわけではありません。変更時はフィールド・コンストラクタ・getter・呼び出し箇所をそろえて実装します。

入力エラーの確認は不要にはなりません。0・21などで結果画面へ進まず、元の入力値と理由が入力画面へ戻ることは、引き続きR5として確認します。正常時の項目追加と、エラー時の要件は別です。

元の記事に戻る

JavaのWebアプリは何から作る?要件から画面・処理・クラスを考える手順