UML のユースケース図と Ruby

Menu Menu


UMLを書くツール

OmniGraffle でも良い

Astah (Jude) を使う


ユースケース図

ユースケース図から始める。

ユースケースにはプログラムを書かない。

ユースケースには状態遷移を書かない。

ユーザの視点から書く


問題3.1

既存のサービス/アプリケーションのユースケース図

Ruby

新しい言語を勉強する時には、まず、Documentを手元に置く。Tutorial をひと通りやってくる。

Tutorial Tutorialを固めたもの 元は、WWW server 経由で読むようになっているらしい。


Ruby 1.9 を使う

EasyPackage から入れる。

/usr/local/bin に入るので注意。Ruby 1.8 との互換性の問題があるので、重ならないようにする。(またですか...)

rvm などを使っても良い。

Ruby は、必ずFile経由で実行する。必要なら irb を使う。

5分で学ぶ Ruby

Rail のTutorial


Web Framework

ユーザはブラウザ(IE/Safari/Chrome)からHTTPでアクセスする。

HTTPには get/put がある。

get/put は、Web server から、Web framework に渡される。(どこの誰にいつ?)

Web framework は、必要に応じて Database にアクセスする。


RESTful Architecture

HTTP で渡す情報には以下のものがある

    get/put の区別

  URI

URI は以下の構造を持っている

    http://hostname/filename?option

このうち、hostname はIP addressに対応するので変更できない。


Resource

filename 部分は Web service の resource (資源) を表している。資源に対して、

   get     database のread 
   put     database へのwrite 

という対応を取る。そうすると URI が Database の情報と一対一に対応することになる。

これを Representational State Transfer(REST) といい、それを採用した Web service を RESTful という。

正確には、get/put の他に post/delete がある。


RESTful でないもの

http://hostname/filename?option の filename?option 部分に、オブジェクトへのメソッド名を 当てる手法もある。これは、RPC (remote procedure call) と呼ばれる。

この手法だと、URI と database は直接には対応しない。


Session

RESTful architecture は、Stateless と呼ばれるが、状態をサービスから完全になくすことは難しい。

例えば、

    空席を調べて
    予約する

の二つを関係ないサービスとして実装するよりも、調べた空席を覚えておく方が良い。特に、Web framework が状態を覚えていると、複数の http get/put が一つの状態を持つ Session で構成される。

Session を作るにはいくつかの方法がある。

    Web framework 内部で覚えておく (状態)
    URI の一部に session id を入れる
    Cookie を使う

Session のような状態を作ることは REST とは両立しないが、状態が悪いというわけではない。実際、login しているかしていないかの状態を持つのは一般的に行われている。

これらは un-RESTful なアプローチになる。


Routing

Web Server に来る入力は URI である。したがって、URI を Web framework の script の適切な部分に適切な引数で送る必要がある。


Rendering

Web Browser に表示されるのは HTML (XML) である。XML のノードは、HTMLの内容を表すべきである。さらに、CSS (Cascading style sheets) という表示のための情報が別に存在する。

Web frame work は HTML と CSS を生成することになる。

また、Browser 上で処理を行うために JavaScript が使われることが多い。

これらの生成は主にマクロ置換で行われる。特別なパターン(macro)が実行時にデータベースの値などで置換されて、Web Browser に送られる。


データベースの正規化

データベースの関数従属性と正規化を理解する。データベースを UML のクラス図で表現する

複数の表、関係、UML


問題3.2

データベースの設計

問題3.3

Ruby on Rails 上に自分で作成したデータベースを作る。

Ruby on Rails 上のデータベース


Debugging

Debugging Rails application

% sudo gem install ruby-debug19 % rails server --debugger


Shinji KONO / Mon Jul 8 19:10:25 2013