ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

組み込みソフトウェアに対するアジャイル開発やTDDの導入

2012-11-09 18:42:10 | トピックス
ここ


組み込みアジャイルコーチ James Grenning さん突撃インタビュー( 前編 )
http://www.ogis-ri.co.jp/otc/hiroba/specials/JamesGrenning/interview1/index.html


最近、自動車業界のISO26262関係で、形式仕様が注目されるけど、
ISO26262の「準形式仕様」に相当するものとして、仕様をastah*のUMLで書いたとすると、
そのastah*のUMLからVDMを作成して形式仕様のVDMにして、

テストデータを作成し、VDMでテストデータの正当性を検証し、

VDMで確認したテストデータをもとにTDDは自動(ないしは半自動)でテストケースを生成する

って流れはつくれるんだよねえ~

誰も言わないけど。。ただ、学会発表するとすると、相当な理論武装がいるとおもうけど・・


P.S ただし、今のUMLからVDM変換ツールでいいかどうかといわれると・・・??

P.P.S ちなみに、アジャイルで、マインドマップかいて、その内容をastah*でUMLにするって場合、アジャイルから、TDD、形式仕様の流れが一挙に繋がることになるんだよね・・

さらにトレーサビリティの観点から言うと、SysMLの要求図が、UMLの各図に繋がると(astah*のスクリプトで関連性を管理/保存する?)、要求と実装のトレーサビリティができ、さらに、astah*を「さぶばーじょん」とかで管理すると、要求管理、実装管理、トレーサビリティの履歴管理が自動的にできるわけよ・・・

だれもいわないけどさ、そんなこと・・・

ってか、そこまでを学会発表するとしたら、たぶん、実装するよりも、理論武装するほうで、時間がかかるよね。開発半年、理論武装10年くらいか(^^;)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

ZendにおけるMVC(Javaフレームワークとの違い)その5

2012-11-09 16:05:14 | PHP
シリーズ「ZendにおけるMVC(Javaフレームワークとの違い)」の続き

前回モデルの部分について書いた。
VCができている前提で、M(モデル)をつなげる方法は、こんなかんじ。


1.index.phpに
   set_include_pathして、モデルのパスを指定する。
   DBをオープンして、Zend_Db_Table_Abstract::setDefaultAdapterで登録

2.DAOを作成する
   Zend/Db/Table/Abstract.phpを継承して作成

3.ビジネスロジックを作成、DAOを呼び出す

4.アクションコントローラーのアクションから、ビジネスロジックを呼び出す



今回は、これの具体例を示します。




■例について


ZendにおけるMVC(Javaフレームワークとの違い)その3
http://blog.goo.ne.jp/xmldtp/e/d0d71cc1e7ebe06ece0d2d4c81566aca

の足し算と同じことをします。

ただし、この計算をコントローラーでするのではなく、

モデルMy_Testクラスのaddメソッドを呼び出し、
addメソッドは、addsテーブルを検索して、答えを返します。
addsテーブルには
id,add1,add2,ansというカラムがあり、
id 主キー(シーケンシャルに番号を振る)
add1 足す数1
add2 足す数2
ans  答え
という形でテーブルに答えが入っています。




■事前準備

・上記「ZendにおけるMVC(Javaフレームワークとの違い)その3」
 で作成したV,C部分は、できているものとします。

・テーブルaddsには、上記の項目(全て型はint、桁数はどうでもよい)で
 データベース上(mysqlのtestデータベース)に作成してあるとします。
 ユーザー名root、パスワードpasswordでアクセスできるものとします。




■1.index.php
 以下のように、パスの追加とDBアクセス部分を追加・修正します。


<?php

require_once 'Zend/Controller/Front.php';


$mp = get_include_path() . PATH_SEPARATOR . 'zendapps/models';
set_include_path($mp);
require_once 'Zend/Db.php';
require_once 'Zend/Db/Table/Abstract.php';

$db = Zend_Db::factory('Pdo_Mysql', array(
'host' => '127.0.0.1',
'username' => 'root',
'password' => 'password',
'dbname' => 'test'
));

Zend_Db_Table_Abstract::setDefaultAdapter($db);


Zend_Controller_Front::run('zendapps/controllers');







■DAO作成

modelsの下に、Tablesというフォルダをきり、その下にadds.phpを置いて
 以下のようにファイルを修正


<?php
require_once 'Zend/Db/Table/Abstract.php';

class Adds extends Zend_Db_Table_Abstract
{
protected $_name = 'adds';

}







■ビジネスロジックを作成

modelsの下に、My_Test.phpというファイルを作成し、以下のようにファイルを修正


<?php

require_once 'Tables/Adds.php';

class My_Test {
public function add($add1,$add2)
{
$test = new Adds();
$select = $test->select();
$select->where('add1 = ' . $add1 . ' and add2 = ' .$add2);
$rows = $test->fetchRow($select);
if (count($rows) == 0 )
{
return "";
}
$row = $rows->toArray();
return $row['ans'];
}
}







■アクションコントローラー修正

controllersの下にあるIndexController.phpというファイルの
 kotaeActionメソッドを、以下のように修正


<?php
require_once 'Zend/Controller/Action.php';
require_once 'My_Test.php';

class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
}

public function kotaeAction()
{
$req = $this->getRequest();
$add1 = $req->getPost('add1');
$add2 = $req->getPost('add2');
$mytest = new My_Test();
$this->view->assign('kotae',$mytest->add($add1,$add2));
$this->_forward('index','ans');
}

}







こんなかんじ。
次回は、javaのStrutsとの比較など

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

クラウドソーシング - いままで、lとrを間違えていた!

2012-11-09 10:17:38 | Weblog
クラウドソーシングって、

ちょっと前まで、クラウドを使って、仕事を分割して複数の人に業務委託することだと思っていた!
つまり、cloudsourcingだと思っていた。

そしたら、この前、

「lとrが違う」って、言われた

crowdsourcing

「雲じゃなくって、群集!」だと・・・


Wikipedia(太字箇所が引用)によると

クラウドソーシング(英語: crowdsourcing)は、狭義では不特定多数の人に業務を委託するという新しい雇用形態。ウェブサービスのトレンドの一つでもある。群衆(crowd)と業務委託(sourcing)を組み合わせた造語。

広義では、必ずしも雇用関係を必要とせず、不特定多数の人間により共同で進められるプロジェクト全般を指す場合もあり、その場合オープンストリートマップ(OSM)などが代表例として挙げられる。


う~ん、そうだったのかあ~

でも、間違って解釈しても、意味が通じていたところがすごい(^^;)

cloudもcrowdも、一緒??
lとrの違いは文脈からわかるとも言われるけど
(I love youといって、こすった人(rub)を見たことない)
今回は、さっぱり気づかんかったぞ!


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする