形式手法とHaskellについてメモ
いけがみさんの記事を読みながら、思ったことをメモ。
#まとまっていないので、あくまでも妄想です。
【元ネタ】
Inemuri nezumi diary(2009-02-05)
2009-06-23 - a-sanの日記
不正な状態遷移を見つけるアルゴリズム - a-sanの日記
僕が形式手法に興味を持った理由は、設計工程でモデリング作業の品質を上げることができて、更にテストケースを生成してくれるのではないか、という期待があったから。
でも、形式手法は確かに凄いのかもしれないが、言語もツールもオープンでないので使いづらい。
いけがみさんの言う通り、完璧な仕様を求めようとして、結局無駄な力を注いでいるのかもしれない。
モデリングは結局、事前条件と事後条件をつなげて一貫性と整合性が取れているか、そして状態遷移図が矛盾なく整合性が取れているか、という作業に落ち着くと思う。
関数型言語Haskellでも、形式手法でやりたかったことが同様にできるのではないか?
少なくとも、「不正な状態遷移を見つけるアルゴリズム - a-sanの日記」にあるHaskellのプログラムは、状態遷移図の整合性チェックができることを示しているように思う。
Haskellも僕にとって難しかった。
モナドや遅延評価だけでなく、関数型言語そのものの発想がないから。
でも、プログラムだからいくらでも試せる。
Howを考えるのではなく、Whatを考えるようにHaskellプログラムを書けばいい。
Haskellを書きながら、問題設定を考えながら、仕様を考えているのだ。
できれば、Haskellプログラムからテストケースを生成したい。
現在、考えている荒筋は下記の通りだ。
MSのPairwise法ツールPICTをエンジンに持つテストケース自動生成ツールMTGに状態遷移表を書けば、パラメータの組み合わせを生成してくれる。
その結果をTestLinkCnvMacroに貼り付けて、ちょっとだけフォーマットを整えれば、テストケースを出力できる。
そのテストケースをTestLinkへインポートすれば、TestLink上でテスト作業を一括管理できる。
つまり、質の良いテストケースを出力できれば、後はTestLinkでテスト作業をコントロールすればいい。
そのために、MTG→TestLinkCnvMacroのツールを使う。
MTG プロジェクト トップページ - SourceForge.JP
TestLinkCnvMacro - SourceForge.JP
後は、MTGへ吐き出すためのパラメータや制約条件がHaskellや形式手法、あるいはUMLの状態遷移図から作れればいい。
実際は、その部分が自動化できておらず、手作業になっている。
チケット駆動開発や構成管理に比べると、テスト工程の自動化はとても難しいが、どこまで可能か考えてみたい。
| 固定リンク
「TestLink」カテゴリの記事
- TiDDとWFとScrumとLeanの違い(2009.10.11)
- チケット駆動開発の適用範囲Part2~チケット駆動開発の運用パターン(2012.02.25)
- TiDDを実践して気付いたことpart3~繰り返し開発の戦略(2009.11.29)
- WindowsのキラーアプリExcel(2010.08.21)
- 「Redmineによるタスクマネジメント実践技法」を倉貫さんに紹介して頂きました #TiDD(2010.10.08)
「ソフトウェア」カテゴリの記事
- 個人タスク管理ツール かんばりすと(2012.05.23)
- AWS MarketplaceでRedmineも動く(2012.04.21)
- モデル検査ツールLTSAのメモ(2009.10.06)
- 【公開】第4.5回Shibuya.trac発表資料「RedmineとTracの機能比較~TiDDに必要な必須機能」(2009.09.12)
- Redmineとチケット駆動開発の感想を集めてみた(2012.04.22)
「チケット駆動開発」カテゴリの記事
- ストーリーポイントとファンクションポイント法の比較(2012.05.26)
- 第3回品川Redmine勉強会の感想 #47redmine(2012.05.19)
- チケット管理は商品管理のモデルと同等なのか(2012.05.12)
- 「アジャイルソフトウェアエンジニアリング」におけるプロダクトバックログの考え方(2012.05.11)
- チケット駆動開発に分散バージョン管理を組み合わせるアイデア(2012.05.09)
「プログラミング」カテゴリの記事
- チケット駆動開発の適用範囲Part2~チケット駆動開発の運用パターン(2012.02.25)
- 継続的インテグレーションを再考(2011.09.11)
- レガシープログラマかどうかを判断する基準(2011.03.24)
- HTML5のオフライン機能の可能性(2011.02.02)
- OracleのPIVOT句(2011.01.27)



コメント