ソフトウェア開発の
パラダイムシフト
2012年12月01日
SEA関西プロセス分科会
小林修
ソフトウェア開発のパラダイムシフト

   キーワード
    ◦   アジャイル
    ◦   クラウド
    ◦   ソーシャル
    ◦   ビッグデータ
    ◦   ユーザエクスペリエンス
    ◦   ドメイン・スペシフィック
    ◦   DevOps
    ◦   ALM (Application Lifecycle Management)
    ◦   Continuous なんとか
ソフトウェア開発のパラダイムシフト
   「開発」から「要求」と「運用」への重点シフト
   閉じた「システム」から環境との融合へ
   「情報」から「活動」へ
   「計画駆動」から「試行とモニター」へ
   個人の技術・能力から「集合知」へ
   汎用的な完全性の追求から目的に応じた多様性へ
   「寺院」から「仏壇」へ、
    「仏壇」から「お守り」へ
ソフトウェア開発のパラダイムシフト

   変化の抱擁
    ◦ 要求の変化
    ◦ 環境の変化
    ◦ 技術の変化
   境界線の消失
    ◦   システムの境界
    ◦   工程の境界
    ◦   立場の境界
    ◦   利害の境界
ソフトウェア開発のパラダイムシフト

   アジャイル開発のベースライン
    (第49回SEA関西プロセス分科会での
    ディスカッション)
    ◦ 阪井さん(SRA)
      現場からの改善、プロジェクト毎の改善
    ◦ 西さん(XPJUG関西)
      人の満足
    ◦ 前川さん(Panasonic)
      ゴールの共有(顧客も含めて)と達成
    ◦ 和田さん(富士通)
      おもてなしの心
ソフトウェア開発のパラダイムシフト
   開発技術・開発環境の変化
    ◦ 「動的言語」へのシフト
      Ruby + Ruby on Rails
      JavaScript + HTML5
    ◦ 「データベース」の多様化
      NoSQL (RelationalからKey-Value Storeへ)
      ACID属性からCAP定理へ
    ◦ 情報の不定形化
      Web、Wiki、検索エンジン
      タブレット + タッチパネル
      マルチメディア(音声・映像)
    ◦ 技術のオープンソース化と集約化の併存
      プラットホームの主要な要素のオープンソース化
      高度化・多様化によりフォローできる人・組織の局所化
    ◦ テスト技術・プラットホームの進化
      テストの自動化フレームワーク(なんとかUnit)
      統合・構成管理との融合
ソフトウェア開発のパラダイムシフト
   ACID属性
    ◦ データベースが「備えるべき」属性
        Atomicity(原子性)
        Consistency(一貫性)
        Isolation(独立性)
        Durability(持続性)
   CAP定理
    ◦ 大規模環境では
      Consistency(一貫性)
      Availability(可用性)
      Partition Tolerance(分割耐性)
    ◦ の3つのうち、同時に2つまでしか満たせな
      い
岸田孝一さんの先見
   岸田孝一さんの先見
    (SEA関西プロセス分科会発足にあたっ
    て岸田さんから言われたこと)
    ◦ 「ウォーターフォール」原論文再読
      Windston Royce, “Managind the Development of Large
       Software Systems”
    ◦ プロダクト指向からプロセス指向へ
      Christiane Floyd, "Outline of Paradigm Change in
       Software Engineering"
    ◦ プロセス・プログラミング
      Leon J. Osterweil, “Software Processes are Software
       too”
    ◦ ソフトウェアの進化
      M M Lehman and J F Ramil, “Software Evolution”
「ソフトウェア技術者」の今後
   「つながり」を深める
      技術者同士のコミュニティ(間の交流)
      他部署・他業種
      家族・地域
       (その時間を作るための自己管理技術)
      コードを介した交流
       (ハッカソン、コードリトリート)
   必要な技術
        分析力、振り返り力
        ツール力
        組み合わせ力
        チーム力
        コード力
   ソフトウェアを「楽しむ」
      ユーザとして楽しむ
      技術者として楽しむ
      オープンソースを読む・いじる
参考文献
   まつもとゆきひろ, “コードの未来”
    ◦ 日経BP, ISBN978-4-8222-3463-8
   岸田孝一, “Position Statement for SS2009 WG1”
    ◦ http://sea.jp/Events/symposium/ss2009/contents/04-HCI/ss2009-
      hci-pp-kishida.pdf
   Winston R. Royce “Managing the Development of Large
    Software Systems”
    ◦ http://leadinganswers.typepad.com/leading_answers/files/original
      _waterfall_paper_winston_royce.pdf
   Christiane Floyd, "Outline of Paradigm Change in Software
    Engineering”
    ◦ http://dl.acm.org/citation.cfm?id=43851&bnc=1
   Leon Osterweil, “Software Processes are Software Too”
    ◦ http://dl.acm.org/citation.cfm?id=41766
   M. M. Lehman, Life Cycles, and Laws of Software Evolution”
    ◦ http://users.ece.utexas.edu/~perry/education/SE-Intro/lehman.pdf

Kspin20121201 kobayashi

  • 1.
  • 2.
    ソフトウェア開発のパラダイムシフト  キーワード ◦ アジャイル ◦ クラウド ◦ ソーシャル ◦ ビッグデータ ◦ ユーザエクスペリエンス ◦ ドメイン・スペシフィック ◦ DevOps ◦ ALM (Application Lifecycle Management) ◦ Continuous なんとか
  • 3.
    ソフトウェア開発のパラダイムシフト  「開発」から「要求」と「運用」への重点シフト  閉じた「システム」から環境との融合へ  「情報」から「活動」へ  「計画駆動」から「試行とモニター」へ  個人の技術・能力から「集合知」へ  汎用的な完全性の追求から目的に応じた多様性へ  「寺院」から「仏壇」へ、 「仏壇」から「お守り」へ
  • 4.
    ソフトウェア開発のパラダイムシフト  変化の抱擁 ◦ 要求の変化 ◦ 環境の変化 ◦ 技術の変化  境界線の消失 ◦ システムの境界 ◦ 工程の境界 ◦ 立場の境界 ◦ 利害の境界
  • 5.
    ソフトウェア開発のパラダイムシフト  アジャイル開発のベースライン (第49回SEA関西プロセス分科会での ディスカッション) ◦ 阪井さん(SRA)  現場からの改善、プロジェクト毎の改善 ◦ 西さん(XPJUG関西)  人の満足 ◦ 前川さん(Panasonic)  ゴールの共有(顧客も含めて)と達成 ◦ 和田さん(富士通)  おもてなしの心
  • 6.
    ソフトウェア開発のパラダイムシフト  開発技術・開発環境の変化 ◦ 「動的言語」へのシフト  Ruby + Ruby on Rails  JavaScript + HTML5 ◦ 「データベース」の多様化  NoSQL (RelationalからKey-Value Storeへ)  ACID属性からCAP定理へ ◦ 情報の不定形化  Web、Wiki、検索エンジン  タブレット + タッチパネル  マルチメディア(音声・映像) ◦ 技術のオープンソース化と集約化の併存  プラットホームの主要な要素のオープンソース化  高度化・多様化によりフォローできる人・組織の局所化 ◦ テスト技術・プラットホームの進化  テストの自動化フレームワーク(なんとかUnit)  統合・構成管理との融合
  • 7.
    ソフトウェア開発のパラダイムシフト  ACID属性 ◦ データベースが「備えるべき」属性  Atomicity(原子性)  Consistency(一貫性)  Isolation(独立性)  Durability(持続性)  CAP定理 ◦ 大規模環境では  Consistency(一貫性)  Availability(可用性)  Partition Tolerance(分割耐性) ◦ の3つのうち、同時に2つまでしか満たせな い
  • 8.
    岸田孝一さんの先見  岸田孝一さんの先見 (SEA関西プロセス分科会発足にあたっ て岸田さんから言われたこと) ◦ 「ウォーターフォール」原論文再読  Windston Royce, “Managind the Development of Large Software Systems” ◦ プロダクト指向からプロセス指向へ  Christiane Floyd, "Outline of Paradigm Change in Software Engineering" ◦ プロセス・プログラミング  Leon J. Osterweil, “Software Processes are Software too” ◦ ソフトウェアの進化  M M Lehman and J F Ramil, “Software Evolution”
  • 9.
    「ソフトウェア技術者」の今後  「つながり」を深める  技術者同士のコミュニティ(間の交流)  他部署・他業種  家族・地域 (その時間を作るための自己管理技術)  コードを介した交流 (ハッカソン、コードリトリート)  必要な技術  分析力、振り返り力  ツール力  組み合わせ力  チーム力  コード力  ソフトウェアを「楽しむ」  ユーザとして楽しむ  技術者として楽しむ  オープンソースを読む・いじる
  • 10.
    参考文献  まつもとゆきひろ, “コードの未来” ◦ 日経BP, ISBN978-4-8222-3463-8  岸田孝一, “Position Statement for SS2009 WG1” ◦ http://sea.jp/Events/symposium/ss2009/contents/04-HCI/ss2009- hci-pp-kishida.pdf  Winston R. Royce “Managing the Development of Large Software Systems” ◦ http://leadinganswers.typepad.com/leading_answers/files/original _waterfall_paper_winston_royce.pdf  Christiane Floyd, "Outline of Paradigm Change in Software Engineering” ◦ http://dl.acm.org/citation.cfm?id=43851&bnc=1  Leon Osterweil, “Software Processes are Software Too” ◦ http://dl.acm.org/citation.cfm?id=41766  M. M. Lehman, Life Cycles, and Laws of Software Evolution” ◦ http://users.ece.utexas.edu/~perry/education/SE-Intro/lehman.pdf