ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)
TRANSCRIPT
ソフトウェア工学からコンピューターサイエンスへ- 今後のシステムアーキテクチャーに必要な技術的切り口とその裏側
日本マイクロソフト株式会社萩原 正義@masayh
目的とアジェンダ
• 目的:システムアーキテクチャーを支配する新しいルール、考え方を提言
• アジェンダ:
– ソフトウェア工学とコンピュータサイエンス
– コンピュータサイエンスの先端事例
– 大事なこと
(C) 2014 Microsoft Corporation 2
ソフトウェア技術者の2極化
(C) 2014 Microsoft Corporation 3
出典: IT人材白書2013 製本版
ソフトウェア技術者を取り巻く課題
• 自己流の経験で何でもうまくいくと錯覚
• 不可能なことが証明されているのに、努力を続ける無駄
• 設計の正しさ、合理性に確証が持てない
• 複雑な技術をどう理解し使いこなすか
• 人より先行して技術を習得する技
(C) 2014 Microsoft Corporation 4
サイエンスと工学両者の役割
(C) 2014 Microsoft Corporation 5
コンピュータサイエンス ソフトウェア工学
アルゴリズムリソース管理スケジュール管理CAP(FLP) 定理プロトコル設計Correctness criteria正規化、意味的分類型システム、DSL機械学習スループット…
見積もり要求開発、概念モデリングALMプロジェクト管理デザインパターンOOADUXパッケージ、デプロイ仮説、検証レイテンシー…
プログラミング
物理法則、原理(理論) 決まり、規律(プラクティス)
制約、トレードオフ
品質方向性
ソフトウェア開発の複雑度
• 複雑な問題領域(ドメイン)
• 機能数、データ項目数、データ量、画面数などの開発規模
• 適応すべき複合技術
• 複雑な開発組織
(C) 2014 Microsoft Corporation
http://gigaom.com/2011/04/26/facts-and-figures-behind-greenpeace%E2%80%99s-green-data-center-report/
ソフトウェア工学の名著
• 実践UML―パターンによる統一プロセスガイド
• オブジェクト指向における再利用のためのデザインパターン (GoF)
• ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系 (POSA)
• AWS-CloudDesignPattern
• ドメイン駆動設計
• データ中心アプローチによる情報システムの構築
• アナリシスパターン―再利用可能なオブジェクトモデル
• 人月の神話―狼人間を撃つ銀の弾はない
• リーン・スタートアップ
(C) 2014 Microsoft Corporation 7
コンピュータサイエンスの名著
• Distributed Algorithms
• The Art of Multiprocessor Programming
• Distributed Systems Principles and Paradigms
• Guide to Reliable Distributed Systems
• Concurrency Control and Recovery in Database Systems
• Transactional Information Systems
• プログラミング言語理論への招待
(C) 2014 Microsoft Corporation 8
このプログラムの結果は?
(C) 2014 Microsoft Corporation 9
• プロセス h と プロセス v が同時実行するとき、
1. h.w[1]
2. v.w[1]
3. h.w[2]
4. h.w[3]
5. v.w[2]
6. h.w[4]
7. h.w[5]
8. Print (v.r[ ] + ”-” + h.r[ ])
2-5
• プロセス h と プロセス v が同時実行するとき、
1. h.w[1]
2. v.w[1]
3. h.w[2]
4. h.w[3]
5. v.w[2]
6. h.w[4]
7. h.w[5]
8. Print (v.r[ ] + ”-” + h.r[ ])
一貫性モデルに依存する解
(C) 2014 Microsoft Corporation 10
Linearizability
EventualConsistency
一貫性モデル 取りうる結果
2-5
0-0, 0-1, 0-2, 0-3, 0-4, 0-5, 1-0, 1-1, 1-2, 1-3, 1-4, 1-5, 2-0, 2-1, 2-2, 2-3, 2-4, 2-5
Consistent Prefix 0-0, 0-1, 1-1, 1-2, 1-3, 2-3, 2-4, 2-5
遅延、メッセージ喪失、ネットワーク切断、動的構成変更
Correctness Criteria
(C) 2014 Microsoft Corporation 11
• Correctness criteria を満足する、証明されたアルゴリズムを支援する機構をアーキテクチャーに組込む
• アプリケーションをそのアーキテクチャー機構で実装
• アプリケーションは correctness criteria を満足する動作が保証される
サービス 1
サービス 2
サービス 3
サービス 4
構造要素 A 構造要素 D構造要素 C構造要素 B
LSM-Tree
(C) 2014 Microsoft Corporation 12
コンピュータサイエンスが主軸
(C) 2014 Microsoft Corporation 13
• コンピュータサイエンスの進化がアーキテクチャースタイル(プログラミングモデル)を変えて、その上にノウハウとしてのプラクティスが乗る
• ソフトウェア工学はプラクティスを体系化する枠を提供
時間コンピュータサイエンス
プラクティス
ソフトウェア工学
アーキテクトにとって大事なこと
• 自分自身を理解すること
• モチベーションの維持
• 知識管理
• アウトプット
(C) 2014 Microsoft Corporation 14
http://f.hatena.ne.jp/BlueBackIMAGE/20070516182938
これからのこと• ビジネスニーズ
– リアルタイム、アドホック、双方向性、スケールする更新
• コンピュータサイエンスとソフトウェア工学の役割
– 技術選択肢、自由度が多い方がよいという考え方
– 制約の中で洗練された設計は美しい
– IT のイノベーションの大半はクラウドから起こる⇒ 分散システムが主要なテーマとなる
– スケーラビリティは可用性、耐障害性(Resiliency)の前提で考える
15(C) 2014 Microsoft Corporation