6K Views
January 27, 13
スライド概要
「積極的なソフトウェア構成管理の活用方法 〜 ソフトウェア構成管理の過去、現在」
2015年12月18日に開催された 日科技連 SQiP 研究会 特別講義の資料を公開します。
関連:
SQiP 研究会の取り組みについて: http://juse-sqip.jp/workshop/index/index.html
ソフトウェア構成管理のベストプラクティス: http://re-workstyle.com/articles/software-configration-management-best-practices/
お問い合わせ:
https://www.servantworks.co.jp/contact/
[email protected]
積極的なソフトウェア構成管理 の活用方法 ソフトウェア構成管理の過去・現在 長沢 智治 アトラシアン株式会社 シニアエバンジェリスト @tnagasawa re-workst yle.com
1996 インテック 2000 2003 Rational Software 日本アイ・ビー・エム ソフトウェアエンジニア プロセス改善コンサルタント プロセス改善コンサルタント 2005 2007 Borland Software Microsoft プロセス改善コンサルタント エバンジェリスト ソリューション アーキテクト プロダクト マネージャ 監訳 / 共著書 多数 プレゼンテーション協力 2014 シニア エバンジェリスト Speaker
Agenda ソフトウェア構成管理 1. 概要 2. 仕組み 3 . 期 待 に 応 える ソフト ウ ェア
Agenda ソフトウェア構成管理 1. 概要 狭 義 と広 義 構 成 要素 周 辺 構成
1-1 ソフトウェア構成管理 狭義と広義
ソフトウェアの変更を ソフトウェア構成管理 狭義と広義 コントロールし続けること 役割や成果物を橋渡しする 本来の責務に注力可能に
ソフトウェア構成管理 ソフトウェアの変更を コントロールし続けること 役割や成果物を橋渡しする 本来の責務に注力可能に 意図したソフトウェアを 作るために必要な基盤技術
意図したソフトウェアへの課題 要求への適応 意図したソフトウェアを 作るために必要な基盤技術 並行作業 分散化への対応 適正なリリース
意図したソフトウェアへの課題 要求への適応 並行作業 分散化への対応 複雑さの軽減 適正なリリース ソフトウェア開発の複雑さの軽減への成果物からの アプローチがソフトウェア構成管理です。 複雑さの軽減は、他にもモデリングや、アーキテクチャなど も考えられます。
狭義のソフトウェア構成管理は、 単にバージョン管理を言われることもあります。 トリアージ 変更依頼 Change Requests (CCB: 変更管理委員会) 広義の ソフトウェア構成管理 要求の変更 機能追加/バグ改修 リリース 要求 / バックログ ソースコード / スクリプト ビルド成果物 / パッケージ 狭義の ソフトウェア構成管理
Agenda ソフトウェア構成管理 1. 概要 狭 義 と広 義 構 成 要素 周 辺 構成
1-2 ソフトウェア構成管理 構成要素 = 能力
ソフトウェア構成管理 構成要素 = 能力 ソースコード / スクリプト の構成のバージョニング ソースコード / スクリプト の構成のバージョニング バージョン制御 ワークスペース制御 ビルド/リリース制御 ビルド成果物 / パッケージ プロセス制御 狭義のソフトウェア構成管理には、 バージョン管理が含まれます。 全体のオーガナイズとワークフロー
ソフトウェア構成管理 構成要素 = 能力 Work Products | Development 開発チーム check out バージョン制御 ワークスペース制御 開発者 バージョン管理リポジトリだけでなく、 ワークスペースにも注目すべきです。 check in / commit
ソフトウェア構成管理 構成要素 = 能力 Work Products | Build 開発チーム check out バージョン制御 ワークスペース制御 ビルド/リリース制御 ビルド bot ソフトウェア構成管理は、自動ビルドに とっても不可欠な基盤となります。 store / deploy ビルド成果物
ソフトウェア構成管理 構成要素 = 能力 Work Products 開発チーム バージョン制御 ワークスペース制御 ビルド/リリース制御 プロセス制御 ソフトウェア開発は、チーム活動であり、 同時並列作業であることを忘れてはなりません。
Agenda ソフトウェア構成管理 1. 概要 狭 義 と広 義 構 成 要素 周 辺 構成
1-3 ソフトウェア構成管理 周辺構成
ソフトウェア構成管理 プロセスの基本要素 周辺構成 サポート システム
人 / 役割 プロセスの基本要素 動機 / 行動 プロセスの基本要素については、 Rational Unified Process で明文化されています。 成果物
プロセスの視点 人 / 役割 アサイン 前 行程 動機 / 行動 作業 成果物 後 行程
役割の視点 人 / 役割 前 行程 作業 理由 動機 / 行動 成果物 理由 作業者である「役割」から見ると、成果物は 作業の結果であり、チームで共有するには 「動機」づけが必要です。 後 行程
成果物の視点 人 / 役割 作業者 後 行程 動機 / 行動 成果物 理由 成果物の視点では、前後関係や動機が不確かとなることが 多くあります。これは、ソフトウェア構成管理だけでを実践する ことの難しさと言い換えることができます。 前 行程
(狭義の) ソフトウェア構成管理の視点 人 / 役割 作業者 後 行程 動機 / 行動 成果物 理由 プロセス改善をバージョン管理ツールの導入だけで 行うケースが多いですが、実は困難なアプローチになる 場合が多いことも知っておくとよいでしょう。 前 行程
サポート システム Issue Tracking System アサイン 前 行程 動機 / 行動 人 / 役割 作業 Automated Build 成果物 Version Control System 後 行程
サポート システム トリアージ 変更依頼 Change Requests (CCB: 変更管理委員会) 要求の変更 機能追加/バグ改修 リリース ITS 要求 / バックログ ソースコード / スクリプト SCM ビルド成果物 / パッケージ CI
確認 ソフトウェア構成管理 1. 概要 狭 義 と広 義 構 成 要素 周 辺 構成
ソフトウェアの変更を コントロールし続けること ソフトウェア構成管理 役割や成果物を橋渡しする 本来の責務に注力可能に
ソフトウェア構成管理 構成要素 = 能力 バージョン制御 ワークスペース制御 ビルド/リリース制御 プロセス制御
複雑さの軽減によりいつでも構成を識別/公開できること トリアージ 変更依頼 Change Requests (CCB: 変更管理委員会) 要求の変更 機能追加/バグ改修 リリース ITS 要求 / バックログ ソースコード / スクリプト SCM ビルド成果物 / パッケージ CI
Agenda ソフトウェア構成管理 1. 概要 2. 仕組み 3 . 期 待 に 応 える ソフト ウ ェア
Agenda 1. 概要 ソフトウェア構成管理 2. 仕組み 特 徴 と中 央 集中 管 理 分 散 管理 導 入 指針
2-1 ソフトウェア構成管理システム 特徴
バージョン制御 ソフトウェア構成管理システム 特徴 ワークスペース制御 ビルド/リリース制御 プロセス制御 能力をサポートするシステム
ソフトウェア構成管理システム 特徴 リポジトリ リポジトリ バージョン制御 ワークスペース制御 バージョン制御 • 成果物の格納 • 成果物のバージョン化 • 成果物構成/関係のバージョン化 識別と再現 ワークスペース制御 • 安全な成果物の識別 • 安全な成果物の取得と更新 • 安全な成果物の利用と引き渡し 能力をサポートするシステム
ソフトウェア構成管理システム 特徴 リポジトリ リポジトリ 上書きの問題 バージョン制御 ワークスペース制御 バージョン制御 • 成果物の格納 • 成果物のバージョン化 • 成果物構成/関係のバージョン化 識別と再現 ワークスペース制御 • 安全な成果物の識別 • 安全な成果物の取得と更新 • 安全な成果物の利用と引き渡し 能力をサポートするシステム
ソフトウェア構成管理システム 特徴 リポジトリ リポジトリ バージョン制御 • 成果物の格納 • 成果物のバージョン化 • 成果物構成/関係のバージョン化 バージョン制御 ワークスペース制御 識別と再現 ワークスペース制御 • 安全な成果物の識別 • 安全な成果物の取得と更新 • 安全な成果物の利用と引き渡し 能力をサポートするシステム
ソフトウェア構成管理システム 特徴 リポジトリ リポジトリ バージョン制御 • 成果物の格納 • 成果物のバージョン化 • 成果物構成/関係のバージョン化 バージョン制御 自動ビルド にとっても ワークスペースは重要です。 ワークスペース制御 識別と再現 ワークスペース制御 • 安全な成果物の識別 • 安全な成果物の取得と更新 • 安全な成果物の利用と引き渡し 能力をサポートするシステム
ソフトウェア構成管理システム 特徴 リポジトリ リポジトリ マージ ブランチ チェックイン / コミット ワークスペース制御 • 成果物の格納 • 成果物のバージョン化 • 成果物構成/関係のバージョン化 識別と再現 チェックアウト バージョン制御 バージョン制御 ワークスペース制御 • 安全な成果物の識別 • 安全な成果物の取得と更新 • 安全な成果物の利用と引き渡し 能力をサポートするシステム
ソフトウェア構成管理システム 特徴 ビルドとリリース どのバージョンで構成されているか? どうビルドしたか? どこにリリースしたか? バージョン制御 ワークスペース制御 ビルド/リリース制御 ソースコードの識別と再現性だけでなく、ビルドとリリースの 構成を識別することはあらゆるソフトウェアにとって重要です。 能力をサポートするシステム
ソフトウェア構成管理システム 特徴 プロセスとポリシー バージョン制御 目的 維持 • 過度な属人性の排除 • ミスと手間の軽減 • 簡素化 • 手段 ワークスペース制御 プロセスとポリシーは、フォーマルな統制だけで ビルド/リリース制御 プロセス制御 なく、人為的ミスの軽減や、均質化、ルーチンワークの 改善と軽減に繋がる戦略的なものです。 能力をサポートするシステム • ポリシー • ACL • 事前条件 • 事後条件
2-1 ソフトウェア構成管理システム 中央集中管理
ソフトウェア構成管理システム 中央集中管理 バージョン制御 ワークスペース制御 ワークスペース制御
ソフトウェア構成管理システム 中央集中管理 ツールは、オンプレミスでの稼働が多いです。 ホスティングサービスもありますが、限定的です。 特徴 • 単一リポジトリ • 管理の集中化が容易 バージョン制御 ワークスペース制御 • 制御の集中化が容易 • 常にリポジトリに接続 例 ワークスペース制御 Subversion (SVN) | ClearCase | TFS (TFVC)
Agenda 1. 概要 ソフトウェア構成管理 2. 仕組み 特 徴 と中 央 集中 管 理 分 散 管理 導 入 指針
2-2 ソフトウェア構成管理システム 分散管理 (DVCS)
ソフトウェア構成管理システム 分散管理 (DVCS) local local local remote local local local local local ワークスペース リポジトリ (分散) ワークスペース
ソフトウェア構成管理システム 分散管理 (DVCS) local clone remote bugfix リポジトリ (分散) ワークスペース master
ソフトウェア構成管理システム 分散管理 (DVCS) local clone remote bugfix bugfix master ワークスペース リポジトリ (分散) master
ソフトウェア構成管理システム 分散管理 (DVCS) commit push local remote bugfix bugfix master ワークスペース リポジトリ (分散) master
ソフトウェア構成管理システム 分散管理 (DVCS) commit push local remote bugfix bugfix master ワークスペース リポジトリ (分散) master
ソフトウェア構成管理システム 分散管理 (DVCS) の特徴 分散リポジトリ local remote • • remote と 作業環境分の local がある プロセス制御がしづらい傾向 local リポジトリ • local bugfix master 作業環境で独自にバージョン管理できる • 影響を与えずにこまめに履歴を残せる • 不必要な履歴は制御できる • “分離と統合” を個別に制御できる
ソフトウェア構成管理システム 分散管理 (DVCS) の特徴 local 特徴 • 分散リポジトリ • 管理の分散化が容易 • 制御が複雑 bugfix remote local master master • オフライン対応が容易 local 例 Git | Mercurial (HG) bugfix
Agenda 1. 概要 ソフトウェア構成管理 2. 仕組み 特 徴 と中 央 集中 管 理 分 散 管理 導 入 指針
2-3 ソフトウェア構成管理システム 導入の指針
ソフトウェア構成管理システム 導入の指針 ✓ 頻繁な変更がある (TDD など) ✓ 地理的に分散している ✓ やり直しが利く ✓ 複雑なブランチ戦略 ✓ 他システムとの連携 ✓ ソーシャル コーディング DVCS 分散バージョン管理システム ひとつでも当てはまれば
ソフトウェア構成管理システム 導入の指針 ✓ 緩やかな変更がある ✓ 常にリポジトリに接続できる ✓ 堅実で公式な構成管理 ✓ 定型的なブランチ戦略 ✓ 他システム連携の事情 ✓ メンバーの成熟度 CVCS 中央集中バージョン管理システム すべて当てはまれば
ソフトウェア構成管理システム 導入の指針 DVCS 分散バージョン管理システム アジャイル プラクティス モダン ブランチ戦略 広義のソフトウェア構成管理
ソフトウェア構成管理システム 導入の指針 DVCS 分散バージョン管理システム 特徴: 反復 フィードバック プラクティスの例: アジャイル プラクティス テスト駆動開発 継続的インテグレーション
ソフトウェア構成管理システム 導入の指針 DVCS 分散バージョン管理システム git-flow: v 1.0 master Hotfix Release モダン ブランチ戦略 Develop Feature A git-flow は、ベストプラクティスのひとつして知られ ていますが、現場に応じて、よりシンプルな運営を することが重要です。複雑さをブランチで作らないように。 Feature B v 1.1 v 2.0
プルリクエストは、多くの DVCS リポジ ソフトウェア構成管理システム トリ システムで採用されています。 導入の指針 DVCS Bitbucket Server や GitHub Enterprise, GitHub, Bitbucket の SaaS 型が有名ですが、 分散バージョン管理システム GitLab などのオンプレミス稼働もあります。 Pull Request Model (GitHub Flow): Develop Pull Request remote Feature A push モダン ブランチ戦略 local 例 Feature A GitHub | Bitbucket | GitLab merge
ソフトウェア構成管理システム 導入の指針 DVCS 分散バージョン管理システム I T S CI トリアージ (CCB: 変更管理委員会) 要求の変更 SCM 広義のソフトウェア構成管理 DVCS に対応した ITS, CI システムが、増加し ている傾向にあります。 変更依頼 機能追加/バグ改修 リリース 要求 バックログ ソースコード スクリプト ビルド成果物 パッケージ
ソフトウェア構成管理システム 導入の指針 DVCS トリアージ 分散バージョン管理システム 変更依頼 ITS • JIRA • Redmine (CCB: 変更管理委員会) 要求の変更 機能追加/バグ改修 リリース 要求 バックログ ソースコード スクリプト ビルド成果物 パッケージ SCM CI • Git • Mercurial • Jenkins • Bamboo • Circle CI
確認 1. 概要 ソフトウェア構成管理 2. 仕組み 特 徴 と中 央 集中 管 理 分 散 管理 導 入 指針
ソフトウェア構成管理システム 特に重要な仕組み リポジトリ バージョン制御 • 成果物の格納 • 成果物のバージョン化 • 成果物構成/関係のバージョン化 識別と再現 ワークスペース制御 • 安全な成果物の識別 • 安全な成果物の取得と更新 • 安全な成果物の利用と引き渡し
ソフトウェア構成管理システム 2つの VCS local remote local CVCS 中央集中バージョン管理システム DVCS 分散バージョン管理システム local
ソフトウェア構成管理システム モダン ブランチ戦略 Pull Request Model (GitHub Flow): Develop Pull Request remote Feature A push local Feature A merge
Agenda ソフトウェア構成管理 1. 概要 2. 仕組み 3 . 期 待 に 応 える ソフト ウ ェア
Agenda 21. .仕概組要み ソフトウェア構成管理 3 . 期 待 に 応 える ソフト ウ ェア ビ ジ ネス と ソ フ ト ウェア 品 質 積 極 的な 構成管 理
3-1 ビジネスニーズとソフトウェア品質 DevOps
ビジネスニーズとソフトウェア品質 DevOps - ビジネス駆動ムーブメント ビジネス 開発・運用のそれぞれのミッションと価値観 ではなく、ビジネス目標と KPI への戦略的な貢献 を継続的に意識する必要があります。 開発 ビジネス目標 売り上げ / 利益率 ユーザー数 生産性 / 稼働率 運用
ビジネスニーズとソフトウェア品質 ソフトウェア構成管理は、開発と運用の協調 DevOps - ビジネス駆動ムーブメント きています。 アイデア/バグ のための情報インフラとしても不可欠となって 問題 コード ビジネス インシデント 開発 運用 リリース 変更 ビジネスのリズム | サイクルタイム・共同所有・透明性・自動化/省力化
ビジネスニーズとソフトウェア品質 DevOps - ソフトウェア構成管理のスコープの拡大 アイデア/バグ 問題 開発コード コード 運用コード ( IaC ) インシデント 開発 運用 リリース 変更 共同所有 IaC : Infrastructure as Code によりインフ ラのコード化が促進され、アプリとインフラを統 制だてて構成できるようになってきました。 ビジネスのリズム | サイクルタイム・共同所有・透明性・自動化/省力化
ビジネスニーズとソフトウェア品質 DevOps - ソフトウェア構成管理のスコープの拡大 アイデア/バグ 問題 開発コード コード 運用コード ( IaC ) インシデント 開発 リリース 運用 変更 ビジネスニーズ ビジネス価値 広義のSCM 共同所有 ビジネスのリズム | サイクルタイム・共同所有・透明性・自動化/省力化
Agenda 21. .仕概組要み ソフトウェア構成管理 3 . 期 待 に 応 える ソフト ウ ェア ビ ジ ネス と ソ フ ト ウェア 品 質 積 極 的な 構成管 理
3-2 積極的な ソフトウェア構成管理
積極的な ソフトウェア構成管理
成果物と作業の複雑化により、メンバーも マネジメントも本業ではなく、情報取集に時間を とられる傾向があります。
成果物の一元化と、ITS による情報統制 (情報 Hub) により、本業に注力できる環境が整います。
アイデア ビジネス価値 ソフトウェア開発における 情報の平易度、粒度、価値観はさまざまです。 バックログ コード 動くソフトウェア ビルド
アイデア ITS, SCM. CI により情報の流通を制御し、 ビジネス価値 ソフトウェア開発の複雑度を軽減します。 SCM だけで改善できない点を注意します。 バックログ 動くソフトウェア ITS SCM コード CI ITS CI ビルド
アイデア ビジネス価値 ソフトウェア構成管理は不可欠ですが、 それだけではな、コミュニケーションと バックログ コラボレーションには不足している点と注意すべきです。 タスク コード
積極的な ソフトウェア構成管理 • Flow of Value • 共同所有 • ソーシャル コーディング (集合知) 「Flow of Value」とは、アイデアがビジネス価値になるまでの流れを重視すべきということです。 各工程での進捗よりも、価値をデリバリーできたかに重きを置きます。 「ソーシャル コーディング」は、フォーマルな構成管理より、知見に収集と改善能力に期待するアプローチで オープンソース プロジェクトで実践されているやり方です。このやり方により、新技術や要求が固まりにくい ソフトウェア開発でも、能力を最大化できることが期待されています。
確認 21. .仕概組要み ソフトウェア構成管理 3 . 期 待 に 応 える ソフト ウ ェア ビ ジ ネス と ソ フ ト ウェア 品 質 積 極 的な 構成管 理
ビジネスニーズとソフトウェア品質 DevOps - ソフトウェア構成管理のスコープの拡大 アイデア/バグ 問題 開発コード コード 運用コード ( IaC ) インシデント 開発 リリース 運用 変更 ビジネスニーズ ビジネス価値 広義のSCM ビジネスのリズム | サイクルタイム・共同所有・透明性・自動化/省力化
まとめ ソフトウェア構成管理 1. 概要 2. 仕組み 3 . 期 待 に 応 える ソフト ウ ェア
無料で講演や現場訪問のご依頼を承ります。 お気軽に、ご連絡ください。 email: [email protected] Thank you! To m o h a r u N a g a s a w a • S e n i o r E v a n g e l i s t • A t l a s s i a n • @t nag a sawa