ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

15
ソフトウェア工学からコンピューターサイエンスへ - 今後のシステムアーキテクチャーに必要な技術的切り口とその裏側 日本マイクロソフト株式会社 萩原 正義 @masayh

Upload: masayoshi-hagiwara

Post on 28-May-2015

6.974 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

ソフトウェア工学からコンピューターサイエンスへ- 今後のシステムアーキテクチャーに必要な技術的切り口とその裏側

日本マイクロソフト株式会社萩原 正義@masayh

Page 2: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

目的とアジェンダ

• 目的:システムアーキテクチャーを支配する新しいルール、考え方を提言

• アジェンダ:

– ソフトウェア工学とコンピュータサイエンス

– コンピュータサイエンスの先端事例

– 大事なこと

(C) 2014 Microsoft Corporation 2

Page 3: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

ソフトウェア技術者の2極化

(C) 2014 Microsoft Corporation 3

出典: IT人材白書2013 製本版

Page 4: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

ソフトウェア技術者を取り巻く課題

• 自己流の経験で何でもうまくいくと錯覚

• 不可能なことが証明されているのに、努力を続ける無駄

• 設計の正しさ、合理性に確証が持てない

• 複雑な技術をどう理解し使いこなすか

• 人より先行して技術を習得する技

(C) 2014 Microsoft Corporation 4

Page 5: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

サイエンスと工学両者の役割

(C) 2014 Microsoft Corporation 5

コンピュータサイエンス ソフトウェア工学

アルゴリズムリソース管理スケジュール管理CAP(FLP) 定理プロトコル設計Correctness criteria正規化、意味的分類型システム、DSL機械学習スループット…

見積もり要求開発、概念モデリングALMプロジェクト管理デザインパターンOOADUXパッケージ、デプロイ仮説、検証レイテンシー…

プログラミング

物理法則、原理(理論) 決まり、規律(プラクティス)

制約、トレードオフ

品質方向性

Page 6: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

ソフトウェア開発の複雑度

• 複雑な問題領域(ドメイン)

• 機能数、データ項目数、データ量、画面数などの開発規模

• 適応すべき複合技術

• 複雑な開発組織

(C) 2014 Microsoft Corporation

http://gigaom.com/2011/04/26/facts-and-figures-behind-greenpeace%E2%80%99s-green-data-center-report/

Page 7: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

ソフトウェア工学の名著

• 実践UML―パターンによる統一プロセスガイド

• オブジェクト指向における再利用のためのデザインパターン (GoF)

• ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系 (POSA)

• AWS-CloudDesignPattern

• ドメイン駆動設計

• データ中心アプローチによる情報システムの構築

• アナリシスパターン―再利用可能なオブジェクトモデル

• 人月の神話―狼人間を撃つ銀の弾はない

• リーン・スタートアップ

(C) 2014 Microsoft Corporation 7

Page 8: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

コンピュータサイエンスの名著

• 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

Page 9: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

このプログラムの結果は?

(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

Page 10: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

• プロセス 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

遅延、メッセージ喪失、ネットワーク切断、動的構成変更

Page 11: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

Correctness Criteria

(C) 2014 Microsoft Corporation 11

• Correctness criteria を満足する、証明されたアルゴリズムを支援する機構をアーキテクチャーに組込む

• アプリケーションをそのアーキテクチャー機構で実装

• アプリケーションは correctness criteria を満足する動作が保証される

サービス 1

サービス 2

サービス 3

サービス 4

構造要素 A 構造要素 D構造要素 C構造要素 B

Page 12: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

LSM-Tree

(C) 2014 Microsoft Corporation 12

Page 13: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

コンピュータサイエンスが主軸

(C) 2014 Microsoft Corporation 13

• コンピュータサイエンスの進化がアーキテクチャースタイル(プログラミングモデル)を変えて、その上にノウハウとしてのプラクティスが乗る

• ソフトウェア工学はプラクティスを体系化する枠を提供

時間コンピュータサイエンス

プラクティス

ソフトウェア工学

Page 14: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

アーキテクトにとって大事なこと

• 自分自身を理解すること

• モチベーションの維持

• 知識管理

• アウトプット

(C) 2014 Microsoft Corporation 14

http://f.hatena.ne.jp/BlueBackIMAGE/20070516182938

Page 15: ソフトウェア工学からコンピューターサイエンスへ (デブサミ2014)

これからのこと• ビジネスニーズ

– リアルタイム、アドホック、双方向性、スケールする更新

• コンピュータサイエンスとソフトウェア工学の役割

– 技術選択肢、自由度が多い方がよいという考え方

– 制約の中で洗練された設計は美しい

– IT のイノベーションの大半はクラウドから起こる⇒ 分散システムが主要なテーマとなる

– スケーラビリティは可用性、耐障害性(Resiliency)の前提で考える

15(C) 2014 Microsoft Corporation