酔いどれエンジニアのブログ

有限会社wisdomのスタッフブログです。主にプログラミングやアプリケーション開発の話題を書いていきます。

ブログシステムを作りながらRailsを学ぶ(7) ユースケースを記述し機能を明確にする

Turnipの記述形式

前回、Turnipを導入しました。 TurnipはRSpecを拡張したものであると紹介しました。

そのRSpechttp://rspec.info/Born under the banner of Behaviour-Driven Developmentとありますから、BDD(ふるまい駆動型開発)のためのツールと言ってよいでしょう。

つまり、TurnipはBDDを自然言語に近い形式で記述できるフレームワークと言えます。

単純な記述書式は以下のような感じです。 これ以外にも「かつ」や「しかし」が使用できます。

# encoding: utf-8
# language: ja
機能: 機能名
 シナリオ: シナリオ名
  前提 前提条件(ここからコロンが要らない)
  もし ○○した、○○された
  ならば  ○○となっていること

早速書いてみようと思ったのですが、手が止まりました。 「機能とは何ぞや」と

「機能」には何を書くべきか。

この機能ですが、単純に「ブログ一覧機能」とか「ログイン機能」とかで良いんでしょうか。間違いではないのかも知れませんが、「ふるまい」には当てはまりません。 シナリオも書かないといけないことから、ユースケースにすれば丁度良いんじゃないかと思い至りました。 ですので、今回はユースケースでやってみることにします。 他に何か良い粒度をご存知の型は、是非Twitterで教えて頂けるとありがたいです。

ユースケース図とは何か

ユースケースを洗い出すためにユースケース図を記述します。 ユースケース図とは「誰(どんな人)」が「何をするのか(何をしたいのか)」を表した図です。 「誰(どんな人)」をアクター、「何をするのか(何をしたいのか)」をユースケースと呼びます。 アクターには外部システムのような人以外のものを記述することも出来ます。

ユースケースには単純に「何をするのか」ではなく、「何をしたいのか」を意識することです。ユースケース図ではアクターが達成したい目的を記述するのが好ましいですから、「何をしたいのか」を意識することによって、例えば「ログインをする」というユースケースは記述しないという事が分かると思います。

しかし「ログインをする」は重要な機能ですから記述しておきたいということもあると思います。そういう場合はメインとなるユースケースの包含という形で記述すると良いでしょう。

ユースケース図を記述してみた

今回はastah*さんのツールを使用して作成しています。 簡単なブログシステムですから、以下のようなことが出来ることを目的に作成していきます。

f:id:wataruuu:20131011191106p:plain

     

最後に

今回はこれで終わりますが、ユースケース図をみると分かるように、非常に粒度が大きいです。 ユースケースとScrumのユーザーストーリーでは何が違うのかと思われると思いますが、その粒度が違います。ユーザーストーリーは受入テストが記述可能となりますが、ユースケースの粒度では大きすぎて不可能です。

これは全くの私見ですが、ユースケースにユーザーストーリーが含まれているとして、ユースケース図を書き、スクラムのユーザーストーリーをBDDのテストに落としこんでいくとハッピーになれるんじゃないかと思います。