反復型ソフトウェア開発の勘所
-
Upload
yoshifumi-tsuda -
Category
Technology
-
view
10 -
download
3
description
Transcript of 反復型ソフトウェア開発の勘所
Summit
Developers
Developers Summit 2013 Action !
反復型ソフトウェア開発の勘所
15-B-7#devsumiB マイクロソフトディベロップメント
IPX Team
津田 義史
Summit
Developers
Developers Summit 2013 Action !
宣伝。
[目次]
1. ソフトウェアを育てる準備
2. チームの役割と責務
3. タイムボックスとビルドの運用
4. 構成管理とブランチの戦略
5. 再現可能なビルドの実現
6. バグの追跡と解決
7. テストケースの自動化
8. 開発プロセスの構築
Summit
Developers
Developers Summit 2013 Action !
反復型の開発モデルとは
• 多くのアジャイルな手法に共通の基盤
• タイムボックスを繰り返しながら、 少しずつ機能を追加
• 早い時期から、 継続的にインテグレーション
最後にインテグレーション(結合)するのはウォーターフォールモデル
Summit
Developers
Developers Summit 2013 Action !
アジェンダ
• タイムボックス
• 継続的インテグレーション
Summit
Developers
Developers Summit 2013 Action !
タイムボックス
• タイムボックスとタイムボクシング
• 3つの制約
• タイムボックスの構成と計画
• フィーチャーボックス
• まとめ
Summit
Developers
Developers Summit 2013 Action !
タイムボックスとは
開発プロジェクトの期間を表す箱
入口 出口
全開発期間
Summit
Developers
Developers Summit 2013 Action !
タイムボクシングとは
作業を箱に詰めること
全開発期間
作業
作業
作業
作業
作業
作業
作業
作業
作業
作業
作業
作業
作業
全開発期間
Summit
Developers
Developers Summit 2013 Action !
正解は?
1. 無理やり詰め込む。
2. 箱を大きいものに取り替える。
3. 全部入れることを諦める。
Summit
Developers
Developers Summit 2013 Action !
正解は?
1. 無理やり詰め込む。
2. 箱を大きいものに取り替える。
3. 全部入れることを諦める。
Summit
Developers
Developers Summit 2013 Action !
3つの制約
1. 無理やり詰め込む。(品質)
2. 箱を大きいものに取り替える。(納期)
3. 全部入れることを諦める。(範囲)
Summit
Developers
Developers Summit 2013 Action !
タイムボックスの適切な長さは?
1年? 1ヶ月? 1週間? 15分?
入れたい作業の
大きさによる
Summit
Developers
Developers Summit 2013 Action !
マイルストーン: 1~数ヵ月間の箱
イテレーション: 数日~数週間の箱
全開発期間
イ テ レ ー
マイルストーン
シ ョ ン ・
マイルストーン
イ テ レ ー
マイルストーン
全開発期間
タイムボックスの構成
反復を階層的に構成する!
Summit
Developers
Developers Summit 2013 Action !
タイムボックスの計画
• 入口と出口の設定
• バックログの作成
• 出口条件の定義
バックログ
作業
作業
作業
作業
作業 マイルストーン
出口入口
出口条件
Summit
Developers
Developers Summit 2013 Action !
バックログの作成
• 作業内容
– 作業完了の定義、条件
• 工数の見積もり
• 優先度 バックログ
作業
作業
作業
作業
作業
Summit
Developers
Developers Summit 2013 Action !
途中で、バックログを増やす
基本的には
やらない
Summit
Developers
Developers Summit 2013 Action !
ゴールを動かすべきではない
Summit
Developers
Developers Summit 2013 Action !
途中で、バックログを減らす
作業から手を離して
次のタイムボックスに
蹴り入れる
Summit
Developers
Developers Summit 2013 Action !
パントする
Summit
Developers
Developers Summit 2013 Action !
出口条件
• 残作業がゼロ
• バグがゼロ (ZBB)
• 出荷可能 (potentially shippable)
など
マイルストーン
出口入口
出口条件
Summit
Developers
Developers Summit 2013 Action !
出口条件の一例(ゼロ・バグ・バウンス)
各マイルストーンの出口で、バグの数をゼロにする
Summit
Developers
Developers Summit 2013 Action !
出口条件の一例(ゼロ・バグ・バウンス)
各マイルストーンの出口で、バグの数をゼロにする
Summit
Developers
Developers Summit 2013 Action !
出口条件の一例(ゼロ・バグ・バウンス)
各マイルストーンの出口で、バグの数をゼロにする
Summit
Developers
Developers Summit 2013 Action !
出口で、出口条件への到達を確認するのでは遅い!
出口条件への到達を継続的に観察(バーンダウンチャート)
Summit
Developers
Developers Summit 2013 Action !
成果物
• 出口条件を満たしたビルド
–マイルストーンビルド
–スプリントビルド
など
Summit
Developers
Developers Summit 2013 Action !
フィーチャーボックス
• 実装する 機能 (範囲) を固定
• 優先度をつける必要なし!
• ただし、いつ仕事が終わるのかは分からない…
納期 (時間) を固定するタイムボックスでは、優先度が重要!
フィーチャー スコープ
Summit
Developers
Developers Summit 2013 Action !
タイムボックスのまとめ
• ウォーターフォール型: 遠距離走
–正しいゴールなのか、実際に着くまで不明
• 反復型: 短距離走
–ゴールに着くたびに軌道修正が可能
ス プ リ ン ト
Summit
Developers
Developers Summit 2013 Action !
アジェンダ
•タイムボックス
•継続的インテグレーション
Summit
Developers
Developers Summit 2013 Action !
継続的インテグレーション
• Continuous Integrationとは
• CIの歴史
• ビルドを料理するコツ
• まとめ
Summit
Developers
Developers Summit 2013 Action !
Continuous Integrationとは
• 継続的に 統 合 ビルドを構築
• XPのプラクティスの1つ、と紹介されることが多いが…
インテグレーション
Summit
Developers
Developers Summit 2013 Action !
CI の歴史
• 書籍: Object Solutions– 1995 グラディ・ブーチ
– At regular intervals, the process of ‘continuous integration’ yields executable releases that grow in functionality at every release.
– 定期的な「継続的インテグレーション」のプロセスが、リリースのたびに機能を成長させ、実行可能なリリースを生み出す。
Summit
Developers
Developers Summit 2013 Action !
CI の歴史
• Web記事: Daily Build and Smoke Test– 1996 スティーブ・マコネル
– Treat daily build as theheartbeat of the project.If there's no heartbeat,the project is dead.
– デイリービルドをプロジェクトの心拍とすべし。心拍がないプロジェクトは死んでいる。
Summit
Developers
Developers Summit 2013 Action !
CI の歴史
• Web記事: Continuous Integration– 2000 マーチン・ファウラー
– The practice has been aroundfor a long time and is used byplenty of folks that wouldnever consider XP for their work.
– このプラクティスはずっと以前からあり、XPなど使いそうもない多くの人々により使われてきた。
Summit
Developers
Developers Summit 2013 Action !
CI の歴史
• Web記事: Daily builds are your friends
– 2001 ジョエル・スポルスキ
– A daily build is an automatic,daily, complete build of theentire source tree.
– デイリービルドとは、ソースツリー全体の完全なビルドを自動化し、毎日行うことだ。
33
Summit
Developers
Developers Summit 2013 Action !
ビルドとは
1. 実行可能なソフトウェア (名詞)
2. 実行可能なソフトウェアを構築する (動詞)
ビルドをビルドする
料理を料理する
Summit
Developers
Developers Summit 2013 Action !
料理をビルドする
• 料理をお届けするときに大切なことは?
–おいしい
–早い、安い
–食べやすい
–品数が多い
–虫が入っていない
–いつも同じ
デ リ バ リ
Summit
Developers
Developers Summit 2013 Action !
ビルドを料理する
• ビルドをお届けするときに大切なことは?
–価値がある
–早い、安い
–使いやすい
–機能が多い
–バグが入っていない
–いつも同じ
デ リ バ リ
Summit
Developers
Developers Summit 2013 Action !
いつも同じビルド
• いつ誰がビルドしても、同じビルドができる
• 以前と同じビルドを、もう一度ビルドできる
ビルドの再現性を確保する
Summit
Developers
Developers Summit 2013 Action !
CRISPなビルド
• Complete: ゼロからビルド可能
• Repeatable: 再現可能
• Informative: 情報を提供可能
• Schedulable: スケジュール可能
• Portable: そこかしこでビルド可能
CRISP
書籍 「達人プログラマー」より。
Summit
Developers
Developers Summit 2013 Action !
CRISPなビルドは「さしすせそ」で料理
• さとう: 再現可能 (Repeatable)
• しお: 情報を提供可能 (Informative)
• す: スケジュール可能 (Schedulable)
• せうゆ: ゼロからビルド可能 (Complete)
• みそ: そこかしこでビルド可能 (Portable)
さしCRISP すせそ
書籍 「実践 反復型ソフトウェア開発」より。
Summit
Developers
Developers Summit 2013 Action !
料理の再現に必要なものは?
• 材料一式
– ソース (Sauce)
• レシピ
– 料理の手順書
• 清潔な厨房
– キッチン
• 調理器具
– コンロ、フライパンなど
Summit
Developers
Developers Summit 2013 Action !
ビルドの再現に必要なものは?
• 材料一式
– ソース (Source)
• レシピ
– ビルドの手順書
• 清潔な厨房
– ビルドマシン
• 調理器具
– コンパイラ、ビルドサーバなど
Summit
Developers
Developers Summit 2013 Action !
材料一式: ブランチで管理
統合ブランチ ベンダーライン リリースブランチ
開発ブランチユーザーブランチリリース準備ライン
タスクブランチ 段階的統合ブランチ リモートライン
Summit
Developers
Developers Summit 2013 Action !
レシピ: 作業の依存関係
複数の作業を、正しい順序で実施する
Summit
Developers
Developers Summit 2013 Action !
ビルドの構成
• Unix版とWindows版
• 32bit版と64bit版
• リリース版とデバッグ版
• 日本語版、英語版、韓国語版、…
このようなビルドの構成の種類を、ビルドのフレーバーという
Summit
Developers
Developers Summit 2013 Action !
清潔な厨房: ビルドマシン
ビルドマシン
リポジトリ
更新
コミット
サンドボックス
Summit
Developers
Developers Summit 2013 Action !
清潔な厨房で料理する
• サンドボックスで作った料理には、虫が入る
• 統合ビルドは、必ず清潔なビルドマシンで!
サンドボックス ビルドマシン
砂場で作った料理をお客様に出しますか?
バグ
Summit
Developers
Developers Summit 2013 Action !
調理器具の進歩
• ひと昔前まで
–製品ごとに、固有のビルドシステムを構築していた
• 現在
–高機能かつ汎用的なビルドシステムが利用可能になった
Summit
Developers
Developers Summit 2013 Action !
CIのフィードバック・サイクル
ビルドマシンサンドボックス
リポジトリ
あまり嬉しくない。
更新
フィードバック
コミット
Summit
Developers
Developers Summit 2013 Action !
バディビルドの自動化
2) バディビルドとオートメーションを実行
6) 手元の差分を破棄
リポジトリ
4) コミット完了を通知
3) コミット5) 更新
1) コミット依頼
バディビルドとは、バディ(相棒、同僚)に作ってもらうビルドのこと
Summit
Developers
Developers Summit 2013 Action !
ビルドの再現に必要なものは?
• 材料一式
– ソース (Source)
• レシピ
– ビルドの手順書
• 清潔な厨房
– ビルドマシン
• 調理器具
– コンパイラ、ビルドサーバなど
Summit
Developers
Developers Summit 2013 Action !
ビルドの焼き上げ
• 安定化
• 品質熟成期間
• Bake Time
• バグ修正スプリント
安定化
CodeComplete
CodeFreeze
Entrance Exit
Summit
Developers
Developers Summit 2013 Action !
ビルドしては直しモデル
最初のバージョンを
ビルド
引退
保守・運用
顧客が満足するまで
修正
開発
保守
最悪。
Summit
Developers
Developers Summit 2013 Action ! 短い時間で焼き上げる!
Summit
Developers
Developers Summit 2013 Action !
CIのまとめ
• 継続的に統合しながら開発
• 頻繁・不定期なビルドで、開発者に素早いフィードバック
• 品質の基準を満たした定期的なビルドも必要
Summit
Developers
Developers Summit 2013 Action !
Call to Action
Summit
Developers
Developers Summit 2013 Action !
Action#1
計画駆動な
アジャイル
をして下さい
Summit
Developers
Developers Summit 2013 Action !
拙著「実践 反復型
ソフトウェア開発」
を買って下さい¥2,940 (税込)
Action#2
Summit
Developers
Developers Summit 2013 Action !
It’s your turn.