チケット駆動開発の展望part2
ソフトウェア構成管理とチケット駆動開発の関連についてメモ。
【1】Twitter / @akipii: この資料はかなり良い!昨今のGit/Mercurialがどんな問題を解決したのか、詳しく書かれている。 分散リポジトリ型時代のソフトウェア構成管理
GitやMercurialなどの第3世代のバージョン管理ツールの特徴や利点が詳しく書かれていて参考になる。
最後のまとめにある「「構成管理が面倒」なのではなく、「面倒なツールで構成管理していた」ことが実感できて幸せ」に同感する。
ツールが我々の作業や思考そのものを規定しているだけでなく、制約をかけている。
ソフトウェア構成管理がソフトウェア開発の作業手順に制約をかける: プログラマの思索
人の足を踏まずに仕事をするということ:ある nakagami の日記:So-netブログ
チームでプログラミングする時、patch(diff)でのやり取りができるか、GitやMercurialの作業に慣れているか、マージ作業が出来るか、と言ったスキルの方がはるかに重要という指摘をしている。
この指摘は、日曜プログラミングと違い、オープンソースでもチームでプログラミングする場合、お互いの成果物を差分比較してマージして一つの成果物を作っていく連携作業に慣れているかどうかが重要ということにつながる。
TortoiseSVNでもpatchを出力したり、逆にpatchをソースに取り込んで反映できる仕組みがある。
どのリビジョンのソースを改変して、どんなソースを追加したのか、というパッチを見て、コミッタはコードレビューするし、検証もする。
パッチがあれば、マージ作業もやりやすくなる。
Mercurial のフックを利用して Redmine のチケット操作を自動化する (フェンリル | デベロッパーズブログ)
Redmineの設定画面にはAPIキーを生成してWebサービスを実行できる仕組みがある。
上記の記事では、post-commit-hookをAPIキーを使ってWebサービス化する手法を提示しているだけでなく、PythonのフックスクリプトでチケットをCloseする機能も追加している。
post-commit-hookは、チケット駆動開発の運用ルールであるNo Ticket, No Commitの発端となった機能であるがゆえにとても重要な機能の一つ。
SCM連携の機能強化はもっと研究される余地があるだろう。
クリアなコードの作り方: 意図が伝わるコミットのしかた - ククログ(2012-03-13)
チケット駆動開発でソースをcommitするとき、commitする粒度にとても神経を使うようになる。
駄目なプログラマはコミットするソースの差分を見ても、何を変更したいのか、分かりにくい。
特に、機能追加やバグ修正を混ぜ込んで、Fatなcommitする時は特にそうだ。
上記の記事では、コミットする粒度についていくつかのアドバイスが書かれていてとても参考になる。
基本は、コミットする理由が分かるように細かく分ける方がいいだろうと思う。
僕も、コミットログの書き方はメンバーに口うるさく言うようにしている。
一度コミットログの書き方に慣れれば、自分の意思を持ってソースを修正するようになる。
No Ticket, No Commitには教育的効果があると思う。
No Ticket, No Commitの効果: プログラマの思索
特に、ソースに書かれた障害管理番号や無駄な仕様の記述は、ソースではなくチケットやコミットログに書くべきだ。
そうしなければ度重なるソース修正で、すぐに古くなりガラクタのコメントになるからだ。
変更理由や仕様はソースのメタ情報であり、そのメタ情報はSCMコミットログやBTSチケットに記載して管理されていくべきだと思う。
SCMやBTSに貯められたメタ情報は、BTSの優れたレポート機能によって色んな観点でメトリクス出力でき、分析したり是正対策を取ることも可能になる。
色々考えてみる。
| 固定リンク
「ソフトウェア工学」カテゴリの記事
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか(2024.01.02)
「構成管理・Git」カテゴリの記事
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
「チケット駆動開発」カテゴリの記事
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
- チケットはデータでとプロセスの二面性を持つ #redmine(2023.12.24)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
コメント