Mais conteúdo relacionado
Semelhante a 言語差異によるTDDプロセスへの影響度の解析 (20)
言語差異によるTDDプロセスへの影響度の解析
- 1. 言語差異による
TDDプロセスへの影響度の解析
第64回電気関係学会九州支部連合大会
佐賀大学
中山裕貴 大月美佳
1
- 2. 背景と目的
テスト駆動開発(TDD)
プログラム開発手法
アジャイルにおけるプラクティスの一つ
TDDはプログラミング言語を選ばない
様々な言語に適用可能
言語には様々な差異がある
型付けやパラダイムなど
言語の差異によりTDDプロセスに差が出ている
経験的に得られている
TDDプロセスデータを集めることで言語による差
異を明示化したい
2
- 3. テスト駆動開発
Red/Green/Refactorのサイクルを繰り返す
Red:テストを書き失敗することを確認する
Green:テストに通る最小の目的コードを書く
Refactor:テストに通る状態を保ちながらリファク
タリングを行う
ここでのテスト→Developer Testing
Red
Refactor Green
3
- 4. プログラミング言語とTDD
TDDは開発手法⇒言語を問わず利用可能
テスティングフレームワークは必須
言語による様々な差異
静的型付けと動的型付け
パラダイム(命令型、OO、関数型など)
機能(null、例外処理など)
TDDプロセスにも違いが表れる
• 各言語のTDDプロセスを収集・比較
• 影響度の調査
• どの程度プロセスが変化するのかの統計データ
4
- 5. プロセスデータ記録
言語を問わないプロセス記録ツール
言語に依存しない
開発環境に依存しない
開発者の使いやすいツール
≒開発者が使ったことがある
ローカルな環境でも使える
Distributed Version Control System
・今回はGitを利用
5
- 6. Gitを用いる理由
高速・高機能
高速⇒作業リズムを崩さない
tagによるポイントへの印付け
git-nowコマンド
自動で生成したコメントを利用
素早くコミットできる
作業リズムを崩さない
コミットログ=開発の歴史
コミットログを見れば開発プロセスを辿れる
これはVersion Control System 共通
誰でも利用可能
多くのOSで利用可能
多くのTDD経験者が利用
6
- 7. Gitを用いたプロセス記録方法(例)
1. git init … リポジトリ作成
2. git checkout –b hogehoge
… ブランチ作成、チェックアウト
3. 各種作業(テスト作成、目的コード実装など)
4. テスト実行
5. git now
6. 3.~5.を繰り返す
7. 1つのチケットが完了した時点でタグを打つ
8. git now –rebase … git now部分の歴史改変
9. hogehogeブランチをmasterにマージ
10. 2.~9.を繰り返す
7
- 8. git-now
テンポラリ用コミットを作成するコマンド
非標準コマンド
既存のgitコマンドを組み合わせて実装
通常のコミットの場合
コメントを毎回自分で考える必要がある
コミット毎に数十秒~数分かかる
作業リズムが崩れる
有効なプロセスデータが得られない
git-nowの場合
自動でコメントを生成しコミット
コミットに1秒もかからない
8 作業リズムが崩れない
- 9. 課題公開方法
今回はRedmineを使用
Webベースプロジェクト管理ツール
課題の説明などが見やすくなる
図:Redmineで課題一覧を表示した状態
9
- 10. 解析対象課題
“つぶやきの種類を判断する”
適度な課題量や仕様変更
課題仕様一覧
reply でもmention でもhash tag でもないTweet を普通の
Tweet と判定する
hash tag を含むTweet を判定する
reply を含むTweet を判定する
mention を含むTweet を判定する
複数の種類がある場合、カンマ区切りで出力される
Tweet をネットワークから取得し、種類を判定する
10
- 11. まとめ
テスト駆動開発
言語の差異によるTDDプロセスへの影響度を調査
したい
言語に依存しないプロセスデータ記録方法が必要
今回はGitを利用
解析対象課題
現状
Java/C#/Pythonのデータ(各1個)を解析中
データ収集継続中
11
- 12. ご静聴ありがとうございました。
ご協力お願いします!
http://redmine.cs.is.saga-u.ac.jp/projects/tdd-process/wiki
12