ソフトウェア構成管理入門

9,839 views

Published on

「積極的なソフトウェア構成管理の活用方法 〜 ソフトウェア構成管理の過去、現在」

2015年12月18日に開催された 日科技連 SQiP 研究会 特別講義の資料を公開します。

関連:
SQiP 研究会の取り組みについて: http://juse-sqip.jp/workshop/index/index.html
ソフトウェア構成管理のベストプラクティス: http://re-workstyle.com/articles/software-configration-management-best-practices/

Published in: Technology

ソフトウェア構成管理入門

  1. 1. 積極的なソフトウェア構成管理
 の活用方法 長沢 智治 アトラシアン株式会社 シニアエバンジェリスト   @tnagasawa    re-workstyle.com ソフトウェア構成管理の過去・現在
  2. 2. 1996 インテック ソフトウェアエンジニア 2000 Rational Software プロセス改善コンサルタント 2003 日本アイ・ビー・エム プロセス改善コンサルタント 2005 Borland Software プロセス改善コンサルタント ソリューション アーキテクト 2007 Microsoft エバンジェリスト プロダクト マネージャ 2014 シニア エバンジェリスト 監訳 / 共著書 多数 プレゼンテーション協力 Speaker
  3. 3. Agenda 1. 概要 2. 仕組み 3. 期待に応えるソフトウェア ソフトウェア構成管理
  4. 4. Agenda 1. 概要 ソフトウェア構成管理 狭義と広義 構成要素 周辺構成
  5. 5. 狭義と広義 ソフトウェア構成管理 1-1
  6. 6. 狭義と広義 ソフトウェア構成管理 ソフトウェアの変更を
 コントロールし続けること 役割や成果物を橋渡しする 本来の責務に注力可能に
  7. 7. ソフトウェア構成管理 ソフトウェアの変更を
 コントロールし続けること 役割や成果物を橋渡しする 本来の責務に注力可能に 意図したソフトウェアを 作るために必要な基盤技術
  8. 8. 意図したソフトウェアを 作るために必要な基盤技術 意図したソフトウェアへの課題 要求への適応 並行作業 分散化への対応 適正なリリース
  9. 9. 意図したソフトウェアへの課題 要求への適応 並行作業 分散化への対応 適正なリリース 複雑さの軽減 ソフトウェア開発の複雑さの軽減への成果物からの
 アプローチがソフトウェア構成管理です。 複雑さの軽減は、他にもモデリングや、アーキテクチャなど
 も考えられます。
  10. 10. 変更依頼 Change Requests 機能追加/バグ改修 要求の変更 要求 / バックログ ソースコード / スクリプト ビルド成果物 / パッケージリリース トリアージ (CCB: 変更管理委員会) 広義の ソフトウェア構成管理 狭義の ソフトウェア構成管理 狭義のソフトウェア構成管理は、
 単にバージョン管理を言われることもあります。
  11. 11. Agenda 1. 概要 ソフトウェア構成管理 狭義と広義 構成要素 周辺構成
  12. 12. 構成要素 = 能力 ソフトウェア構成管理 1-2
  13. 13. 構成要素 = 能力ソフトウェア構成管理 バージョン制御 ワークスペース制御 ビルド/リリース制御 プロセス制御 ソースコード / スクリプト の構成のバージョニング ソースコード / スクリプト の構成のバージョニング ビルド成果物 / パッケージ 全体のオーガナイズとワークフロー 狭義のソフトウェア構成管理には、
 バージョン管理が含まれます。
  14. 14. 構成要素 = 能力ソフトウェア構成管理 バージョン制御 ワークスペース制御 Work Products | Development 開発者 開発チーム check out check in / commit バージョン管理リポジトリだけでなく、
 ワークスペースにも注目すべきです。
  15. 15. 構成要素 = 能力ソフトウェア構成管理 バージョン制御 ワークスペース制御 Work Products | Build ビルド bot 開発チーム check out ビルド/リリース制御 store / deploy ビルド成果物ソフトウェア構成管理は、自動ビルドに
 とっても不可欠な基盤となります。
  16. 16. 構成要素 = 能力ソフトウェア構成管理 バージョン制御 ワークスペース制御 ビルド/リリース制御 プロセス制御 Work Products 開発チーム ソフトウェア開発は、チーム活動であり、
 同時並列作業であることを忘れてはなりません。
  17. 17. Agenda 1. 概要 ソフトウェア構成管理 狭義と広義 構成要素 周辺構成
  18. 18. 周辺構成 ソフトウェア構成管理 1-3
  19. 19. 周辺構成 ソフトウェア構成管理 プロセスの基本要素 サポート システム
  20. 20. プロセスの基本要素 動機 / 行動 人 / 役割 成果物 プロセスの基本要素については、
 Rational Unified Process で明文化されています。
  21. 21. 後 行程動機 / 行動 人 / 役割 成果物 アサイン 作業 前 行程 プロセスの視点
  22. 22. 動機 / 行動 人 / 役割 成果物 理由 作業 前 行程 後 行程 理由 役割の視点 作業者である「役割」から見ると、成果物は
 作業の結果であり、チームで共有するには
 「動機」づけが必要です。
  23. 23. 動機 / 行動 人 / 役割 成果物 後 行程 作業者 理由 成果物の視点 前 行程成果物の視点では、前後関係や動機が不確かとなることが
 多くあります。これは、ソフトウェア構成管理だけでを実践する
 ことの難しさと言い換えることができます。
  24. 24. 動機 / 行動 人 / 役割 成果物 前 行程 後 行程 作業者 理由 (狭義の) ソフトウェア構成管理の視点 プロセス改善をバージョン管理ツールの導入だけで
 行うケースが多いですが、実は困難なアプローチになる
 場合が多いことも知っておくとよいでしょう。
  25. 25. 後 行程動機 / 行動 人 / 役割 成果物 アサイン 作業 前 行程 Version Control System Issue Tracking System サポート システム Automated Build
  26. 26. サポート システム 変更依頼 Change Requests 機能追加/バグ改修 要求の変更 要求 / バックログ ソースコード / スクリプト ビルド成果物 / パッケージリリース トリアージ (CCB: 変更管理委員会) ITS SCM CI
  27. 27. 確認 1. 概要 ソフトウェア構成管理 狭義と広義 構成要素 周辺構成
  28. 28. ソフトウェア構成管理 ソフトウェアの変更を
 コントロールし続けること 役割や成果物を橋渡しする 本来の責務に注力可能に
  29. 29. 構成要素 = 能力ソフトウェア構成管理 バージョン制御 ワークスペース制御 ビルド/リリース制御 プロセス制御
  30. 30. 変更依頼 Change Requests 機能追加/バグ改修 要求の変更 要求 / バックログ ソースコード / スクリプト ビルド成果物 / パッケージリリース トリアージ (CCB: 変更管理委員会) ITS SCM CI 複雑さの軽減によりいつでも構成を識別/公開できること
  31. 31. 1. 概要 Agenda 2. 仕組み 3. 期待に応えるソフトウェア ソフトウェア構成管理
  32. 32. 1. 概要 2. 仕組み 特徴と中央集中管理 分散管理 導入指針 Agenda ソフトウェア構成管理
  33. 33. 特徴 ソフトウェア構成管理システム 2-1
  34. 34. 特徴 ソフトウェア構成管理システム バージョン制御 ワークスペース制御 ビルド/リリース制御 プロセス制御 能力をサポートするシステム
  35. 35. ソフトウェア構成管理システム バージョン制御 ワークスペース制御 リポジトリ 識別と再現 能力をサポートするシステム • 成果物の格納 • 成果物のバージョン化 • 成果物構成/関係のバージョン化 • 安全な成果物の識別 • 安全な成果物の取得と更新 • 安全な成果物の利用と引き渡し バージョン制御 ワークスペース制御 特徴 リポジトリ
  36. 36. ソフトウェア構成管理システム ワークスペース制御 リポジトリ 識別と再現 能力をサポートするシステム • 成果物の格納 • 成果物のバージョン化 • 成果物構成/関係のバージョン化 • 安全な成果物の識別 • 安全な成果物の取得と更新 • 安全な成果物の利用と引き渡し バージョン制御 ワークスペース制御 バージョン制御 特徴 リポジトリ 上書きの問題
  37. 37. ソフトウェア構成管理システム ワークスペース制御 リポジトリ 識別と再現 能力をサポートするシステム • 成果物の格納 • 成果物のバージョン化 • 成果物構成/関係のバージョン化 • 安全な成果物の識別 • 安全な成果物の取得と更新 • 安全な成果物の利用と引き渡し バージョン制御 ワークスペース制御 バージョン制御 特徴 リポジトリ
  38. 38. ソフトウェア構成管理システム ワークスペース制御 リポジトリ 識別と再現 能力をサポートするシステム • 成果物の格納 • 成果物のバージョン化 • 成果物構成/関係のバージョン化 • 安全な成果物の識別 • 安全な成果物の取得と更新 • 安全な成果物の利用と引き渡し バージョン制御 ワークスペース制御 バージョン制御 特徴 リポジトリ 自動ビルド にとっても
 ワークスペースは重要です。
  39. 39. ワークスペース制御 バージョン制御 チェックイン / コミット チェックアウト ブランチマージ ソフトウェア構成管理システム 能力をサポートするシステム リポジトリ • 成果物の格納 • 成果物のバージョン化 • 成果物構成/関係のバージョン化 バージョン制御 識別と再現 • 安全な成果物の識別 • 安全な成果物の取得と更新 • 安全な成果物の利用と引き渡し ワークスペース制御 特徴 リポジトリ
  40. 40. ソフトウェア構成管理システム ワークスペース制御 能力をサポートするシステム バージョン制御 特徴 ビルド/リリース制御 どのバージョンで構成されているか? どうビルドしたか? どこにリリースしたか? ビルドとリリース ソースコードの識別と再現性だけでなく、ビルドとリリースの
 構成を識別することはあらゆるソフトウェアにとって重要です。
  41. 41. ソフトウェア構成管理システム バージョン制御 ワークスペース制御 ビルド/リリース制御 プロセス制御 能力をサポートするシステム 特徴 • 維持 • 過度な属人性の排除 • ミスと手間の軽減 • 簡素化 目的 • ポリシー • ACL • 事前条件 • 事後条件 手段 プロセスとポリシー プロセスとポリシーは、フォーマルな統制だけで なく、人為的ミスの軽減や、均質化、ルーチンワークの 改善と軽減に繋がる戦略的なものです。
  42. 42. 中央集中管理 ソフトウェア構成管理システム 2-1
  43. 43. 中央集中管理 ソフトウェア構成管理システム ワークスペース制御 バージョン制御 ワークスペース制御
  44. 44. 中央集中管理 ソフトウェア構成管理システム ワークスペース制御 バージョン制御 ワークスペース制御 特徴 • 単一リポジトリ • 管理の集中化が容易 • 制御の集中化が容易 • 常にリポジトリに接続 例 Subversion (SVN) ¦ ClearCase ¦ TFS (TFVC) ツールは、オンプレミスでの稼働が多いです。
 ホスティングサービスもありますが、限定的です。
  45. 45. 1. 概要 2. 仕組み 特徴と中央集中管理 分散管理 導入指針 Agenda ソフトウェア構成管理
  46. 46. 分散管理 (DVCS) ソフトウェア構成管理システム 2-2
  47. 47. 分散管理 (DVCS) ソフトウェア構成管理システム remote local local local local local local local local ワークスペース リポジトリ (分散) ワークスペース
  48. 48. 分散管理 (DVCS) ソフトウェア構成管理システム remotelocal ワークスペース リポジトリ (分散) master bugfix clone
  49. 49. 分散管理 (DVCS) ソフトウェア構成管理システム remotelocal ワークスペース リポジトリ (分散) master bugfix master bugfix clone
  50. 50. 分散管理 (DVCS) ソフトウェア構成管理システム remotelocal ワークスペース リポジトリ (分散) master bugfix master bugfix commit push
  51. 51. 分散管理 (DVCS) ソフトウェア構成管理システム remotelocal ワークスペース リポジトリ (分散) master bugfix master bugfix commit push
  52. 52. 分散管理 (DVCS) の特徴 ソフトウェア構成管理システム remotelocal 分散リポジトリ • remote と 作業環境分の local がある • プロセス制御がしづらい傾向 local master bugfix local リポジトリ • 作業環境で独自にバージョン管理できる • 影響を与えずにこまめに履歴を残せる • 不必要な履歴は制御できる • 分離と統合 を個別に制御できる
  53. 53. 特徴 • 分散リポジトリ • 管理の分散化が容易 • 制御が複雑 • オフライン対応が容易 例 Git ¦ Mercurial (HG) 分散管理 (DVCS) の特徴 ソフトウェア構成管理システム remotelocal master bugfix master bugfix local local
  54. 54. 1. 概要 2. 仕組み 特徴と中央集中管理 分散管理 導入指針 Agenda ソフトウェア構成管理
  55. 55. 導入の指針 ソフトウェア構成管理システム 2-3
  56. 56. 導入の指針 ソフトウェア構成管理システム 頻繁な変更がある (TDD など) 地理的に分散している やり直しが利く 複雑なブランチ戦略 他システムとの連携 ソーシャル コーディング 分散バージョン管理システム DVCS ひとつでも当てはまれば
  57. 57. 導入の指針 ソフトウェア構成管理システム 緩やかな変更がある 常にリポジトリに接続できる 堅実で公式な構成管理 定型的なブランチ戦略 他システム連携の事情 メンバーの成熟度 中央集中バージョン管理システム CVCS すべて当てはまれば
  58. 58. 導入の指針 ソフトウェア構成管理システム 分散バージョン管理システムDVCS アジャイル プラクティス モダン ブランチ戦略 広義のソフトウェア構成管理
  59. 59. 導入の指針 ソフトウェア構成管理システム 分散バージョン管理システムDVCS アジャイル プラクティス 反復 フィードバック 特徴: プラクティスの例: テスト駆動開発 継続的インテグレーション
  60. 60. 導入の指針 ソフトウェア構成管理システム 分散バージョン管理システムDVCS モダン ブランチ戦略 git-flow: Develop Feature A master Release Hotfix Feature B v 1.0 v 1.1 v 2.0 git-flow は、ベストプラクティスのひとつして知られ ていますが、現場に応じて、よりシンプルな運営を
 することが重要です。複雑さをブランチで作らないように。
  61. 61. 導入の指針 ソフトウェア構成管理システム 分散バージョン管理システムDVCS モダン ブランチ戦略 Pull Request Model (GitHub Flow): Develop Feature A push remote local Feature A Pull Request merge 例 GitHub ¦ Bitbucket ¦ GitLab プルリクエストは、多くの DVCS リポジ トリ システムで採用されています。 GitHub, Bitbucket の SaaS 型が有名ですが、
 Bitbucket Server や GitHub Enterprise, GitLab などのオンプレミス稼働もあります。
  62. 62. 導入の指針 ソフトウェア構成管理システム 分散バージョン管理システムDVCS 広義のソフトウェア構成管理 SCM ITS CI 変更依頼 機能追加/バグ改修 要求の変更 要求 バックログ ソースコード
 スクリプト ビルド成果物
 パッケージリリース トリアージ (CCB: 変更管理委員会) DVCS に対応した ITS, CI システムが、増加し ている傾向にあります。
  63. 63. 導入の指針 ソフトウェア構成管理システム 分散バージョン管理システムDVCS 変更依頼 機能追加/バグ改修 要求の変更 要求 バックログ ソースコード
 スクリプト ビルド成果物
 パッケージリリース トリアージ (CCB: 変更管理委員会) ITS SCM CI • JIRA • Redmine • Git • Mercurial • Jenkins • Bamboo • Circle CI
  64. 64. 1. 概要 2. 仕組み 特徴と中央集中管理 分散管理 導入指針 ソフトウェア構成管理 確認
  65. 65. 特に重要な仕組み ソフトウェア構成管理システム リポジトリ • 成果物の格納 • 成果物のバージョン化 • 成果物構成/関係のバージョン化 バージョン制御 識別と再現 • 安全な成果物の識別 • 安全な成果物の取得と更新 • 安全な成果物の利用と引き渡し ワークスペース制御
  66. 66. 中央集中バージョン管理システム CVCS 2つの VCS ソフトウェア構成管理システム remote local local local 分散バージョン管理システム DVCS
  67. 67. モダン ブランチ戦略 ソフトウェア構成管理システム Pull Request Model (GitHub Flow): Develop Feature A push remote local Feature A Pull Request merge
  68. 68. 1. 概要 Agenda 2. 仕組み 3. 期待に応えるソフトウェア ソフトウェア構成管理
  69. 69. 2. 仕組み1. 概要 3. 期待に応えるソフトウェア ビジネスとソフトウェア品質 積極的な構成管理 Agenda ソフトウェア構成管理
  70. 70. DevOps ビジネスニーズとソフトウェア品質 3-1
  71. 71. DevOps ビジネスニーズとソフトウェア品質 ビジネス 開発 運用 ビジネス目標 売り上げ / 利益率 ユーザー数 生産性 / 稼働率 - ビジネス駆動ムーブメント 開発・運用のそれぞれのミッションと価値観 ではなく、ビジネス目標と KPI への戦略的な貢献 を継続的に意識する必要があります。
  72. 72. DevOps ビジネスニーズとソフトウェア品質 ビジネス - ビジネス駆動ムーブメント 開発 運用 インシデント 問題 変更 アイデア/バグ コード リリース ビジネスのリズム ¦ サイクルタイム・共同所有・透明性・自動化/省力化 ソフトウェア構成管理は、開発と運用の協調 のための情報インフラとしても不可欠となって
 きています。
  73. 73. DevOps ビジネスニーズとソフトウェア品質 - ソフトウェア構成管理のスコープの拡大 開発 運用 インシデント 問題 変更 アイデア/バグ コード リリース ビジネスのリズム ¦ サイクルタイム・共同所有・透明性・自動化/省力化 共同所有 開発コード 運用コード
 ( IaC ) IaC : Infrastructure as Code によりインフ ラのコード化が促進され、アプリとインフラを統 制だてて構成できるようになってきました。
  74. 74. DevOps ビジネスニーズとソフトウェア品質 - ソフトウェア構成管理のスコープの拡大 開発 運用 インシデント 問題 変更 アイデア/バグ コード リリース ビジネスのリズム ¦ サイクルタイム・共同所有・透明性・自動化/省力化 共同所有 開発コード 運用コード
 ( IaC ) ビジネスニーズ ビジネス価値 広義のSCM
  75. 75. 2. 仕組み1. 概要 3. 期待に応えるソフトウェア ビジネスとソフトウェア品質 積極的な構成管理 Agenda ソフトウェア構成管理
  76. 76. ソフトウェア構成管理 積極的な 3-2
  77. 77. ソフトウェア構成管理 積極的な
  78. 78. 成果物と作業の複雑化により、メンバーも
 マネジメントも本業ではなく、情報取集に時間を とられる傾向があります。
  79. 79. 成果物の一元化と、ITS による情報統制 (情報 Hub) により、本業に注力できる環境が整います。
  80. 80. アイデア ビジネス価値 コード ビルド 動くソフトウェアバックログ ソフトウェア開発における
 情報の平易度、粒度、価値観はさまざまです。
  81. 81. アイデア ビジネス価値 コード ビルド 動くソフトウェアバックログ ITS ITS SCM CI CI ITS, SCM. CI により情報の流通を制御し、
 ソフトウェア開発の複雑度を軽減します。 SCM だけで改善できない点を注意します。
  82. 82. アイデア ビジネス価値 コード バックログ タスク ソフトウェア構成管理は不可欠ですが、
 それだけではな、コミュニケーションと
 コラボレーションには不足している点と注意すべきです。
  83. 83. ソフトウェア構成管理 積極的な •Flow of Value •共同所有 •ソーシャル コーディング (集合知) 「Flow of Value」とは、アイデアがビジネス価値になるまでの流れを重視すべきということです。
 各工程での進捗よりも、価値をデリバリーできたかに重きを置きます。 「ソーシャル コーディング」は、フォーマルな構成管理より、知見に収集と改善能力に期待するアプローチで
 オープンソース プロジェクトで実践されているやり方です。このやり方により、新技術や要求が固まりにくい
 ソフトウェア開発でも、能力を最大化できることが期待されています。
  84. 84. 2. 仕組み1. 概要 3. 期待に応えるソフトウェア ビジネスとソフトウェア品質 積極的な構成管理 ソフトウェア構成管理 確認
  85. 85. DevOps ビジネスニーズとソフトウェア品質 - ソフトウェア構成管理のスコープの拡大 開発 運用 インシデント 問題 変更 アイデア/バグ コード リリース ビジネスのリズム ¦ サイクルタイム・共同所有・透明性・自動化/省力化 開発コード 運用コード
 ( IaC ) ビジネスニーズ ビジネス価値 広義のSCM
  86. 86. まとめ 1. 概要 2. 仕組み 3. 期待に応えるソフトウェア ソフトウェア構成管理
  87. 87. Thank you! Tomoharu Nagasawa • Senior Evangelist • Atlassian • @tnagasawa 無料で講演や現場訪問のご依頼を承ります。 お気軽に、ご連絡ください。 email: tnagasawa@atlassian.com

×