UML のユースケース図と Ruby

# 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

Ruby Tutorial

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

UML のユースケース図と Ruby

UMLを書くツール
ユースケース図
問題3.1
* 既存のサービス/アプリケーションのユースケース図
Ruby
* Tutorial
* Tutorialを固めたもの
Ruby 1.9 を使う
* 5分で学ぶ Ruby
* Ruby Tutorial
* Rail のTutorial
Web Framework
RESTful Architecture
Resource
RESTful でないもの
Session
Routing
Rendering
データベースの正規化
* 複数の表、関係、UML
問題3.2
* データベースの設計
問題3.3
* Ruby on Rails 上のデータベース
Debugging

Shinji KONO / Tue May 29 13:57:53 2012