「反復型ソフトウェア開発」はソフトウェア工学の良書
「実践反復型ソフトウェア開発」を読んでみたら、構成管理・ビルド管理・障害管理の方法や概念、用語がうまく整理されて説明されていて、とても分かりやすかった。
僕もこんな本を書きたかった。
ラフなメモ書き。
僕がRedmineによるチケット駆動開発を見つけて、ハマった理由の一つは、ソフトウェア開発特有の技術や概念がここにある、と直感したから。
バージョン管理やビルド管理、障害管理は、ソフトウェアに関わる仕事をしている人ならば、必ずかじっている。
でも、実は、バージョン管理やビルド管理、障害管理について、正式な説明も勉強も受けたことがなく、現場で失敗を繰り返してようやく身に付けた技術が多いのではないだろうか?
ソフトウェア開発は、プログラムを書けばそれで終わりではない。
チームでソフトウェアを開発する場合、複数人の作業が衝突しないようにバージョン管理が必要だ。
クライアントアプリを配布したり、Webサーバーへモジュールをりりーするには、ソースからビルドしてデプロイないしインストーラーを作成するビルド手順を自動化ないし定形作業化した方がいい。
テスト中やリリース後に発生した障害は、BTSやITSで管理して、ソフトウェアの品質向上に役立てるようにする。
それらの作業はとても地味だけれども、プロジェクトの成功のための基盤となるものだ。
技術者で生きていく限り、ソフトウェア開発の基盤となる構成管理、ビルド管理、障害管理は常に最新の情報を追いかけるべきだ。
何故なら、それらの技術は時代とともにどんどんパワフルになっているから。
そして、それらの開発基盤は最終的には開発プロセスへ取り込まれる。
開発プロセスの品質を向上させるには、開発基盤の効率化も欠かせない。
ソースをバージョン管理するのは当たり前だが、ブランチをそれぞれの目的に応じて作って、管理しているか?
マージ作業を手作業でやって失敗していないか?
GitやMercurialのような最新のSCMを使って、メインラインとトピックブランチを使い分けているか?
複数チームで開発している場合、いきなりメインラインにコミットやマージするのではなく、段階的統合ブランチを使って、品質が安定したと分かってからメインラインに入れるようにしているか?
保守ブランチとして、リリースブランチ、リリース準備ブランチ、ユーザブランチをそれぞれの用途に応じて使い分けているか?
作業ブランチとして、フィーチャブランチ、トピックブランチ、バグフィックスブランチ、リファクタブランチなどを使い分けているか?
最新版でセキュリティパッチを当てた時、既にリリース済みの古いバージョンへパッチを当てるバックポートを意識して使っているか?
ブランチにおける指定された範囲内のリビジョンをまとめてメインラインへポートするバルクポートと、必要なリビジョンだけを選んでポートするチェリーピックポートを使い分けているか?
(これは、Gitのcherry-pickコマンドと同じ)
ベースとなるソースを更新するリベースを使っているか?
2個のブランチ間でポートを繰り返す双方向マージを行う場合、マージトラッキング機能が強力なSCMを使ってマージ機能を自動化できるようにしているか?
「実践反復型ソフトウェア開発」で興味深い箇所は、構成管理や障害管理の章で、「チケット駆動開発
」という単語は出ていないけれども、チケット駆動開発に関わる概念が出ていること。
コミットフック、障害管理票とソースのリビジョンの紐づけは、No Ticket, No Commitにつながる。
BTSを障害だけでなくToDoリストへ拡張することは、Ticket Firstにつながる。
障害管理票がなければ作業を開始しないことは、No Ticket, No Workにつながる。
BTSチケットがソフトウェアかんばん、そして工場内で使われる仕掛けかんばんに似ていることは、リーンソフトウェア開発につながる。
この辺りはもっと整理してみたいと思う。
| 固定リンク
「プロジェクトマネジメント」カテゴリの記事
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart1~CSFはWBSみたいなものと捉える(2023.02.14)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
- プロセス設計はどの範囲を指すのか?~プロマネの仕事はテーラリングにある(2022.06.19)
「Redmine」カテゴリの記事
- 第24回redmine.tokyo勉強会の感想 #redmineT(2023.06.03)
- 「Redmineハンドブック」は良い本です(2022.12.17)
- 第23回東京Redmine勉強会の感想~コミュニティは仲間から生まれて続く #redmineT(2022.11.06)
- 第22回東京Redmine勉強会の感想 #redmineT(2022.05.29)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
「ソフトウェア工学」カテゴリの記事
- QAエンジニアの役割は開発チームのガードレールみたいなものという考え方(2023.08.21)
- テストアーキテクチャ設計モデルとJSTQB概念モデルの比較(2023.07.02)
- パターンカタログよりもモンスターカタログの方が面白いね #jasstkansai(2023.06.24)
- 「ゲームをテストする バグのないゲームを支える知識と手法」の感想(2023.06.10)
- JSTQBのテストプロセスの概念モデルを描いてみた(2023.05.26)
「廃止Mercurial」カテゴリの記事
- GitHubはオープンソースのプロセスを標準化した(2015.06.11)
- 「反復型ソフトウェア開発」はソフトウェア工学の良書(2013.02.09)
- Mercurialに取り込まれたコミュニティ由来の機能一覧(2013.01.12)
- WordやExcelから直接Mercurialへコミットできるアドオンmsofficehg(2012.12.07)
- RedmineでSubversion リポジトリ表示を高速化する方法(2012.11.23)
「構成管理・Git」カテゴリの記事
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
- チケット駆動開発のプロセスとチケット管理システムの全体像 #Redmine(2021.12.28)
- 第21回東京Redmine勉強会の感想 #redmineT ~Redmineは業務も組織も包み込む柔軟性がある(2021.11.28)
「チケット駆動開発」カテゴリの記事
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
- タスク分割は親子チケットにすべきか、それともチェックリストにすべきか #redmine(2022.03.04)
- Redmineにメンション機能が入るらしい(2022.01.15)
「Agile」カテゴリの記事
- 日本のアジャイル開発の先人による話が良かった(2023.07.15)
- JSTQBのテストプロセスの概念モデルを描いてみた(2023.05.26)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
- DDPは品質管理に役立つのか(2022.12.13)
「Jenkins」カテゴリの記事
- 第12回東京Redmine勉強会の感想 #redmineT(2017.05.14)
- 技術的負い目の記事がすごい(2016.01.03)
- RedmineとGitLabを連携すると、RedmineをGitHub化できるか(2014.10.17)
- 「チーム開発実践入門」が発売されている(2014.04.08)
- 最近、ツールとプロセスを組合わせたソフトウェア開発手法の本が増えている(2014.04.03)
コメント