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

日本マイクロソフト株式会社
萩原 正義
@masayh
目的とアジェンダ
• 目的:システムアーキテクチャーを支配
する新しいルール、考え方を提言
• アジェンダ:
– ソフトウェア工学とコンピュータサイエンス
– コンピュータサイエンスの先端事例
– 大事なこと

(C) 2014 Microsoft Corporation

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

出典: IT人材白書2013 製本版
(C) 2014 Microsoft Corporation

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

• 自己流の経験で何でもうまくいくと錯覚
• 不可能なことが証明されているのに、努力
を続ける無駄
• 設計の正しさ、合理性に確証が持てない
• 複雑な技術をどう理解し使いこなすか
• 人より先行して技術を習得する技
(C) 2014 Microsoft Corporation

4
サイエンスと工学
方向性

両者の役割

物理法則、原理(理論)

決まり、規律(プラクティス)

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

品質

ソフトウェア工学

プログラ
ミング

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

制約、トレードオフ
(C) 2014 Microsoft Corporation

5
ソフトウェア開発の複雑度
• 複雑な問題領域(ドメイン)
• 機能数、データ項目数、デー
タ量、画面数などの開発規模
• 適応すべき複合技術
• 複雑な開発組織

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

(C) 2014 Microsoft Corporation
ソフトウェア工学
の名著
• 実践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
このプログラムの結果は?

• プロセス h と プロセス v が同時実行するとき、
1.
2.
3.
4.
5.
6.
7.
8.

h.w[1]
v.w[1]
h.w[2]
h.w[3]
v.w[2]
h.w[4]
h.w[5]
Print (v.r[ ] + ”-” + h.r[ ])
(C) 2014 Microsoft Corporation

2-5

9
一貫性モデルに依存する解

• プロセス h と プロセス v が同時実行するとき、
1.
2.
3.
4.
5.
6.
7.
8.

h.w[1]
取りうる結果
v.w[1] 一貫性モデル
h.w[2] Linearizability 2-5
h.w[3] Eventual
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
Consistency
v.w[2]
Consistent Prefix 0-0, 0-1, 1-1, 1-2, 1-3, 2-3, 2-4, 2-5
h.w[4]
遅延、メッセージ喪失、ネッ
h.w[5]
トワーク切断、動的構成変更
Print (v.r[ ] + ”-” + h.r[ ])
(C) 2014 Microsoft Corporation

10
Correctness Criteria
• Correctness criteria を満足する、証明されたアルゴ
リズムを支援する機構をアーキテクチャーに組込む
• アプリケーションをそのアーキテクチャー機構で実装
• アプリケーションは correctness criteria を満足する
動作が保証される
構造要素 A

構造要素 B

サービス 1

構造要素 C

構造要素 D

サービス 2
サービス 3
サービス 4

(C) 2014 Microsoft Corporation

11
LSM-Tree

(C) 2014 Microsoft Corporation

12
コンピュータサイエンスが主軸
• コンピュータサイエンスの進化がアーキテクチャー
スタイル(プログラミングモデル)を変えて、その
上にノウハウとしてのプラクティスが乗る
• ソフトウェア工学はプラクティスを体系化する枠を
提供
コンピュータ
サイエンス

時間

プラク
ティス

ソフトウェア
工学

(C) 2014 Microsoft Corporation

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

自分自身を理解すること
モチベーションの維持
知識管理
アウトプット

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

(C) 2014 Microsoft Corporation

14
これからのこと
• ビジネスニーズ
– リアルタイム、アドホック、双方向性、スケール
する更新

• コンピュータサイエンスとソフトウェア工学
の役割
– 技術選択肢、自由度が多い方がよいという考え方
– 制約の中で洗練された設計は美しい
– IT のイノベーションの大半はクラウドから起こる
⇒ 分散システムが主要なテーマとなる
– スケーラビリティは可用性、耐障害性
(Resiliency)の前提で考える
(C) 2014 Microsoft Corporation

15

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