46
ソフトウェアエンジニアリングの全体 IoT時代のモデリングおよび関連す る品質 鷲崎 弘宜 早稲田大学 グローバルソフトウェアエンジニアリング研究所 Twitter: @Hiro_Washi [email protected] http://www.washi.cs.waseda.ac.jp/ 20161111JEITA フォーラム 基調講演 わしざき ひろのり

わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

ソフトウェアエンジニアリングの全体とIoT時代のモデリングおよび関連す

る品質

鷲崎 弘宜 早稲田大学

グローバルソフトウェアエンジニアリング研究所

Twitter: @Hiro_Washi [email protected]

http://www.washi.cs.waseda.ac.jp/

2016年11月11日 JEITA フォーラム 基調講演

わしざき ひろのり

Page 2: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

• 早稲田大学グローバルソフトウェアエンジニアリング研究所所長・教授

• 国立情報学研究所客員教授

• 株式会社 システム情報 社外取締役

• ISO/IEC/JTC1/SC7/WG20 Convenor

• SEMAT Japan Chapter Chair

• IEEE CS Japan Chapter Secretary

• IEEE ICST 2017 PC Co-Chair

2

Page 3: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

3

日本経済新聞 2016年11月2日

日本は優れた技術を持ちながら世界のスピードに追い付けていない

世界に何を学び、日本のどの強みを伸ばすべきか

ソフトの総合的な品質評価が必要

データ+経験則 パターン大事 ソフト開発の人

材づくりが重要

ビジネス、システムも含めた捉え方

世界のソフトウェア開発の潮流はアジャイル開発

IoT時代のセ

キュリティ、プライバシは重要な研究課題

Page 4: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

目次

• 正統なエンジニアリングと知識体系

• モデリングとモデル駆動開発

• モデリングと品質

• IoT時代のモデリング: 参照アーキテクチャと接続

• IoT時代のモデリング: 測定・学習さらには育成

• まとめ

4

Page 5: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

正統なエンジニアリング

職業人が果たす判断,行為,助言が,社会で実質的な価値を形成

5 松本吉弘, “エンジニアリング基礎知識体系とISO標準”, ITSCJ Newsletter, No.88, 2010.

Paul Star, “The Social Transformation of American Medicine,” Basic Books, 1982.

知識・適格性の妥当性をコミュニティで判定できる環境

コミュニティで妥当と確認される知識が科学的基盤に基づく

Page 6: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

知識の島々から体系へ

経験、ガイド

知識 プロフェッショナリズム

ベストプラクティスに裏打ちされた能力

参考 I. Jacobson, et al.: Tutorial: Essence - Kernel and Language for Software Engineering Practices, ICSE'13

知識の島々

カバレッジ UML

Java, C#, Python

アジャイル

6

知識の体系

体系上のパターンや手法

Page 7: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

Guide to the Software Engineering Body of Knowledge (SWEBOK) v3 2014 http://www.swebok.org/

7

要求 構築 設計 テスティング

マネジメント プロセス

保守

構成管理 モデル・手法 品質

経済 プロフェッショナル

実践

要求の基礎 要求プロセス 要求抽出 要求分析 要求仕様 要求妥当性確認 実践上の考慮事項

設計の基礎 設計の主要問題 構造とアーキテクチャ ユーザインタフェース設計 設計品質の分析評価 設計の表記 設計戦略・手法 設計ツール

構築の基礎 構築の管理 実践上の考慮事項 構築技法 構築ツール

テストの基礎 テストレベル テスト技法 テスト関連計量尺度 テストプロセス テストツール

保守の基礎 保守の主要問題 保守プロセス 保守技法 保守ツール

SCMプロセスのマネジメント 構成の識別 構成制御 構成状態記録・報告 構成監査 リリース管理・配布 構成管理ツール

開始と範囲定義 プロジェクト計画 プロジェクト実施 レビュー・評価 終結 計量 マネジメントツール

プロセス定義 ライフサイクル プロセス査定・改善 計量 プロセスツール

モデリング モデル種別 モデルの分析 開発手法

品質の基礎 品質マネジメントプロセス 実践上の考慮事項 品質ツール

プロフェッショナリズム 集団ダイナミクス・心理 コミュニケーションスキル

経済の基礎 ライフサイクル経済 リスク・不確実性 経済分析手法 実践上の考慮事項

計算基礎 数学基礎 エンジニアリング

基礎

Page 8: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

V3改訂に見るソフトウェアエンジニアリング進化 • プロフェッショナリズムの重要性

– 倫理、法令、技術者認定、コミュニケーション

• ソフトウェアの外への拡大 – ビジネス、経済 – 計算、数学、エンジニアリング

• 深化や定着 – 各種ツール・自動化 – モデリング: モデリングの原則、表記、種別、分析

– 構築技法: テンプレート、契約による設計、MDA

– テスト技法: モデルベース、ペアワイズ、テスト駆動

• 新たな品質特性 – ユーザビリティ: UI設計、インタラクションテスティング

– セーフティ: Airborne Systems and Equipment Certification 8

プロフェッショナリズム

計算、数学、エンジニアリング

組織

ビジネス

システム

ソフトウェア

PM

BO

K

BA

BO

K REB

OK

SEBO

K

SWEB

OK

SQu

BO

K

SWEB

OK

V3

Page 9: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

目次

• 正統なエンジニアリングと知識体系

• モデリングとモデル駆動開発

• モデリングと品質

• IoT時代のモデリング: 参照アーキテクチャと接続

• IoT時代のモデリング: 測定・学習さらには育成

• まとめ

9

Page 10: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

モデルとは

「現実世界の何か」に対する「認知上の目的」のためのコスト上効率的な「代用物」

12

システム モデル ~の表現

メタモデル

~に従う

日高宗一郎, Jean BEZIVIN, 胡振江, Frederic JOUAULT, 『モデル駆動工学の原理と応用』 (1) モデル駆動工学の歴史と背景, コンピュータソフトウェア, 30(3), 2013

Page 11: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

プログラミングからモデリングへ • 「どう動かすのか」から「何をしたいのか」へ • 品質の早期の作り込みと検証 • コミュニケーション

時代

抽象度

MOV

ADD…

アセンブラMOV

ADD…

アセンブラ

要求要求

public abstract aspect ObserverProtocol {

protected interface Subject { }

protected interface Observer { }

 protected abstract pointcut

  subjectChange(Subject s);

after(Subject s): subjectChange(s) {

Iterator iter = getObservers(s).iterator();

while(iter.hasNext())

updateObserver(s,(Observer)iter.next()); }

protected abstract void

updateObserver(Subject s, Observer o);

public abstract aspect ObserverProtocol {

protected interface Subject { }

protected interface Observer { }

 protected abstract pointcut

  subjectChange(Subject s);

after(Subject s): subjectChange(s) {

Iterator iter = getObservers(s).iterator();

while(iter.hasNext())

updateObserver(s,(Observer)iter.next()); }

protected abstract void

updateObserver(Subject s, Observer o);

public abstract aspect ObserverProtocol {

protected interface Subject { }

protected interface Observer { }

 protected abstract pointcut

  subjectChange(Subject s);

after(Subject s): subjectChange(s) {

Iterator iter = getObservers(s).iterator();

while(iter.hasNext())

updateObserver(s,(Observer)iter.next()); }

protected abstract void

updateObserver(Subject s, Observer o);

public abstract aspect ObserverProtocol {

protected interface Subject { }

protected interface Observer { }

 protected abstract pointcut

  subjectChange(Subject s);

after(Subject s): subjectChange(s) {

Iterator iter = getObservers(s).iterator();

while(iter.hasNext())

updateObserver(s,(Observer)iter.next()); }

protected abstract void

updateObserver(Subject s, Observer o);

プログラムpublic abstract aspect ObserverProtocol {

protected interface Subject { }

protected interface Observer { }

 protected abstract pointcut

  subjectChange(Subject s);

after(Subject s): subjectChange(s) {

Iterator iter = getObservers(s).iterator();

while(iter.hasNext())

updateObserver(s,(Observer)iter.next()); }

protected abstract void

updateObserver(Subject s, Observer o);

public abstract aspect ObserverProtocol {

protected interface Subject { }

protected interface Observer { }

 protected abstract pointcut

  subjectChange(Subject s);

after(Subject s): subjectChange(s) {

Iterator iter = getObservers(s).iterator();

while(iter.hasNext())

updateObserver(s,(Observer)iter.next()); }

protected abstract void

updateObserver(Subject s, Observer o);

モデル

ハード/システム

13

Page 12: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

14

Lv0: モデルなし – 口頭伝達、その場しのぎの修正

Lv1: 文書のみ – あいまい、主観がそのまま

Lv2: 文書+図 – 理解しやすい

Lv3: 図+文書 – 主観が客観に

Lv4: 精密な図+文書 – コードとの自動接続

Lv5: 図のみ – モデル駆動開発が目指す未来

モデリングの成熟度

参考: ヨシュヴァルメル他: UML/MDAのためのオブジェクト制約言語OCL,エスアイビーアクセス, 2004

public abstract aspect ObserverProtocol {

protected interface Subject { }

protected interface Observer { }

 protected abstract pointcut

  subjectChange(Subject s);

after(Subject s): subjectChange(s) {

Iterator iter = getObservers(s).iterator();

while(iter.hasNext())

updateObserver(s,(Observer)iter.next()); }

protected abstract void

updateObserver(Subject s, Observer o);

public abstract aspect ObserverProtocol {

protected interface Subject { }

protected interface Observer { }

 protected abstract pointcut

  subjectChange(Subject s);

after(Subject s): subjectChange(s) {

Iterator iter = getObservers(s).iterator();

while(iter.hasNext())

updateObserver(s,(Observer)iter.next()); }

protected abstract void

updateObserver(Subject s, Observer o);

Page 13: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

15

出発地

目的地

WP1

WP2

出発地

目的地

WP1

WP2

モデル駆動開発とは • モデル変換

– モデルに付加情報を加えて、異なる視点のモデルやコードを得る

– 視点の設定、モデルの記述・操作の重要性

– 関心事の分離 • Computation Independent • Platform Independent • Platform Specific

• モデル駆動開発(MDD) – 分析・設計情報をモデルとして表現

– モデル変換の繰り返し

– 可搬性、再利用性、相互運用性向上

飛行船とは・・・ 基地局とは・・・

回転の指示があると・・・

プロトコルXXXに従い16bitデータYYYを受信し

class Ship{

void move()

x = y + 1;

PIM

PSM

コード

CIM

PM

CPU, モータ, OS, 言語・・・

Page 14: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

ソフトウェア・システムの様々なモデル

• システム全体 – SysML, ADL – 要求分析、設計、シミュレーション

• アプリケーション – UMLなど – 設計や検証、コード生成

• 制御 – Simulinkなど – 設計やシミュレーション、コード生成

• 電気・機械 – CADなど – 設計や解析

16

Page 15: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

周辺領域との関係

• ドメイン特化言語(Domain-Specific Language; DSL) – 特定の問題領域(ドメイン)用の開発言語

– MDDにおけるモデリング言語として

• ドメイン駆動設計(Domain-Driven-Design; DDD) – ドメインモデル中心の考え方

– MDDがパターン・実現方法の一つ

• プロダクトラインエンジニアリング(Product-Line Engineering; PLE)

– 共通資産を再利用した組織的・戦略的なプロダクト系列開発・管理

– MDDが実現方法の一つ

17

Page 16: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

目次

• 正統なエンジニアリングと知識体系

• モデリングとモデル駆動開発

• モデリングと品質

• IoT時代のモデリング: 参照アーキテクチャと接続

• IoT時代のモデリング: 測定・学習さらには育成

• まとめ

18

Page 17: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

SWEBOKに見るモデリングと品質 • モデル・手法

– モデリング、モデル種別、モデルの分析、開発手法

• エンジニアリング基礎 – 統計分析、モデリング・シミュレーション・プロトタイピング・・・

• 要求 – 要求の基礎、要求プロセス、要求抽出、要求分析、要求仕様、要求妥当性確認、実践上の考慮事項

• 設計 – 設計の基礎、設計の主要問題、構造とアーキテクチャ、ユーザインタフェース設計、設計品質の分析評価、設計の表記、設計戦略・手法、設計ツール

• 品質 – 品質の基礎(ソフトウェアセーフティー)

• 計算基礎 – セキュア開発・保守(要求セキュリティ、設計セキュリティ・・・)

19

Page 18: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

リダイレクトシステム開発の例 [繁在家08]

• 要求

品質要求を明確化できるか?

–シナリオ

–ゴール指向分析

• 設計

品質を着実に組み入れられるか?

–パターン

–品質駆動設計・評価

リダイレクトシステムリダイレクトシステム

[繁在家08] 繁在家学, 鷲崎 弘宜, "品質要求駆動型のアーキテクチャ分析設計手法によるWEBシステム開発", 情報処理学会研究報告ソフトウェア工学研究会報告 SE160, pp.33-40, 2008.

20

Page 19: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

要求: 品質シナリオ

刺激源

成果物

環境

刺激 応答

応答測定法

A7 (環境)通常稼働時に (刺激)リダイレクト情報に変更があった場合(応答)運用を止めずに反映できる。

A1 (環境)通常稼働時に (刺激)JMeterで高負荷をかけた場合 (応答)HTTPリクエストを秒間1000トランザクション処理できる。

[繁在家08] 繁在家学, 鷲崎 弘宜, "品質要求駆動型のアーキテクチャ分析設計手法によるWEBシステム開発", 情報処理学会研究報告ソフトウェア工学研究会報告 SE160, pp.33-40, 2008.

21

Page 20: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

要求: ゴール指向分析

PC/携帯リダイレクト処理ができる

PCと携帯を判別する

リダイレクト種別を判別する

マイルストーン分割

AND

AND

効率性保守性 ISO9126の観点

時間効率性

資源効率性

変更性試験性

ファイルを読み込む

APSの再起動なしにリダイレクト情報の変更が反映される

ロギングモジュール

使用性

運用性 副特性

ゴールモデル

責任モデル

高いスループットが得られること

平均レスポンスタイムが諸元値を満たすこと

CPU利用率が諸元値以下であること

キャッシュに情報を保持する

マイルストーン分割

デバッグ作業及び試験が容易に実施できること

運用状況及びリダイレクト情報の変更の確認が容易に行えること

A1 A2A3A5A7

A9

リダイレクト情報を容易に変更できること

A6A8

PC/携帯判定モジュール

リダイレクト情報ファイル読込モジュール

URLパラメータ判定モジュール

リダイレクト実行モジュール

品質特性群

リダイレクト処理を実行する

ログの出力を実行する

ログデータを提供する

ログを出力する

AND

AND

リダイレクト情報を取得する

事例分割

PC/携帯リダイレクト処理ができる

PCと携帯を判別する

リダイレクト種別を判別する

マイルストーン分割

AND

AND

効率性保守性 ISO9126の観点

時間効率性

資源効率性

変更性試験性

ファイルを読み込む

APSの再起動なしにリダイレクト情報の変更が反映される

ロギングモジュール

使用性

運用性 副特性

ゴールモデル

責任モデル

高いスループットが得られること

平均レスポンスタイムが諸元値を満たすこと

CPU利用率が諸元値以下であること

キャッシュに情報を保持する

マイルストーン分割

デバッグ作業及び試験が容易に実施できること

運用状況及びリダイレクト情報の変更の確認が容易に行えること

A1 A2A3A5A7

A9

リダイレクト情報を容易に変更できること

A6A8

PC/携帯判定モジュール

リダイレクト情報ファイル読込モジュール

URLパラメータ判定モジュール

リダイレクト実行モジュール

品質特性群

リダイレクト処理を実行する

ログの出力を実行する

ログデータを提供する

ログを出力する

AND

AND

リダイレクト情報を取得する

事例分割

[繁在家08] 繁在家学, 鷲崎 弘宜, "品質要求駆動型のアーキテクチャ分析設計手法によるWEBシステム開発", 情報処理学会研究報告ソフトウェア工学研究会報告 SE160, pp.33-40, 2008.

22

Page 21: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

設計: パターンと品質駆動設計

刺激源

成果物

環境

刺激 応答

応答測定法 実現手法

アーキテクチャパターン

A7. リダイレクト情報の 変更を停止無しで反映

A1. HTTPリクエストを秒間 1000トランザクション処理

定義ファイル

動的読込み

多重化・ 負荷分散

[繁在家08] 繁在家学, 鷲崎 弘宜, "品質要求駆動型のアーキテクチャ分析設計手法によるWEBシステム開発", 情報処理学会研究報告ソフトウェア工学研究会報告 SE160, pp.33-40, 2008.

23

Page 22: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

ノード

FW

負荷分散

クラスタ

システム・基盤

PC/携帯

判定

URLパラ

メータ判定

リダイレクト

実行

ロギング

UI

アスペクト型ロギング

定義ファイル動的読込み

リダイレクト

情報ファイル

リダイレクト情報

ファイル読込

レイヤ

アプリケーション

[繁在家08] 繁在家学, 鷲崎 弘宜, "品質要求駆動型のアーキテクチャ分析設計手法によるWEBシステム開発", 情報処理学会研究報告ソフトウェア工学研究会報告 SE160, pp.33-40, 2008.

24

Page 23: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

MDDとセキュリティパターン

Y. Shiroma, H. Washizaki, et al., “Model-Driven Security Patterns Application and Validation,” PLoP 2010

T. Kobashi, N. Yoshioka, H. Kaiya, H. Washizaki, T. Okubo, Y. Fukazawa, “Validating Security Design Pattern Applications by

Testing Design Models,” International Journal of Secure Software Engineering, Vol. 5, Issue 4, pp.1-30, 2014.

25

<<Subject>>

従業員 id

name

患者 id

name

Right

accessType

checkRight()

Subject id

name

ProtectionObject id

name

守られるべき

資産 アクセスしようとするユーザ

権限のチェック

<<Subject>>

従業員

id

name

患者

id

name

Authenticator

Proof_of_Identify

Authentication

Information

<<Creates>>

<<Subject>>

従業員 id

name

Authenticator

Proof_of_Identify

Authentication

Information

<<Creates>>

Authorization

(認可)パターン

Right

accessType

checkRight()

<<ProtOb>>

患者 id

name

Page 24: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

Nov. 14, 201

26

window.onload = setEventHandler;

function setEventHandler() {

$(“reg_type”).onchange = calcPrice;

・・・ $(“reg_addcart”).onclick = addCart;

};

function calcPrice() { ・・・ }; function addCart() {

if(isValidInput()) {

reqRunTrans();

} else {

alert(“Invalid user inputs”);

}

};

function reqRunTrans() {

new Ajax.Request(“runTrans.php”, {

method: “GET”, parameters: getParams(),

onSuccess: succeeded });

};

function succeeded() { disableAll();

jumpToConfirm();

}; [Maezawa13] Y. Maezawa, H. Washizaki, Y. Tanabe, S. Honiden,

“Automated Verification of Pattern-Based Interaction Invariants in Ajax Applications,” IEEE/ACM ASE 2013

Page 25: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

Nov. 14, 201

[Maezawa13] Y. Maezawa, H. Washizaki, Y. Tanabe, S. Honiden,

“Automated Verification of Pattern-Based Interaction Invariants in Ajax Applications,” IEEE/ACM ASE 2013

モデルのリバースエンジニアリング

二重注文

Page 26: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

Nov. 14, 201

28

window.onload = setEventHandler;

function setEventHandler() {

$(“reg_type”).onchange = calcPrice;

・・・ $(“reg_addcart”).onclick = addCart;

};

function calcPrice() { ・・・ }; function addCart() {

if(isValidInput()) {

$(“addCart”).disabled = true;

reqRunTrans();

} else {

alert(“Invalid user inputs”);

$(“addCart”).disabled = false;

}

};

function reqRunTrans() {

new Ajax.Request(“runTrans.php”, {

method: “GET”, parameters: getParams(),

onSuccess: succeeded }); };

function succeeded() { disableAll();

jumpToConfirm(); }; [Maezawa13] Y. Maezawa, H. Washizaki, Y. Tanabe, S. Honiden,

“Automated Verification of Pattern-Based Interaction Invariants in Ajax Applications,” IEEE/ACM ASE 2013

Page 27: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

目次

• 正統なエンジニアリングと知識体系

• モデリングとモデル駆動開発

• モデリングと品質

• IoT時代のモデリング: 参照アーキテクチャと接続

• IoT時代のモデリング: 測定・学習さらには育成

• まとめ

29

Page 28: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

IoT/CPSの時代 • Internet of Things

– 物理世界にあるモノのインターネットによる接続

– IoEへ: データ・情報、生体の接続

• Cyber Physical System – 物理世界の情報とサイバー世界の情報の融合

• 効率化、新ビジネス・価値の創発

30 岩野和生, 高島洋典, サイバーフィジカルシステムとIoT(モノのインターネット) 実世界と情報を結びつける ,情報管理 57, 2014.

Cloud

Page 29: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

IoT/CPS時代の課題

• 社会やビジネスとの接続 – バリューをどう創発するか?

• 物理世界との接続 – ギャップは?(連続/離散、(非)同期)

• ヘテロな構成 – 異領域やライフサイクルをどう扱うか?

• 不確実な未来 – 変化を予測できるか?対応できるか?

• 品質、特にセキュリティ&セーフティ&プライバシ – リスクの増大、全体を保証できるか?

31

岩野和生, 高島洋典, サイバーフィジカルシステムとIoT(モノのインターネット) 実世界と情報を結びつける ,情報管理 57, 2014.

K. Marzullo, NSF Cyber Physical Systems (CPS) Program, 2013.

P. Patel and D. Cassou, Enabling High-level Application Development for the Internet of Things, JSS 103, 2015.

Page 30: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

ISO/IEC 25010:2011

32

利用時の品質

Quality in use

有効性

Effectiveness

効率性

Efficiency

リスク回避性

Freedom from risk

満足性

Satisfaction

利用状況網羅性

Context coverage

内部品質・外部品質

Internal and external quality

機能

適合性

Functional suitability

互換性

Compatibility

セキュリティ

Security

信頼性

Reliability

使用性

Usability

性能効率性

Performance efficiency

保守性

Maintainability

移植性

Portability

Functional completeness

Co-existence

Confidentiality

Maturity Appropriateness recognisability

Time-behavior

Analysability Adaptability

Functional correctness

Interoperability

Integrity Fault tolerance

Learnability Resource utilization

Modifiability Installability

Functional appropriateness

Non-repudiation

Recoverability

Operability Capacity Reusability Replaceability

Accountability

Availability

User error protection

Testability

Authenticity

UI aesthetics Modularity

Accessibility

ISO/IEC 25010:2011 Systems and software engineering-Systems and software Quality Requirements and Evaluation (SQuaRE) -

System and software quality models

Page 31: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

IoT/CPS時代の挑戦の可能性

33

岩野和生, 高島洋典, サイバーフィジカルシステムとIoT(モノのインターネット) 実世界と情報を結びつける ,情報管理 57, 2014.

K. Marzullo, NSF Cyber Physical Systems (CPS) Program, 2013.

P. Patel and D. Cassou, Enabling High-level Application Development for the Internet of Things, JSS 103, 2015.

参照アーキテクチャ

バリューや物理世界との接続モデリング

測定・予測および適応

データと機械学習による品質保証の改善

社会やビジネスとの接続

物理世界との接続

ヘテロな構成

不確実な未来

品質、特にセキュリティ&セーフティ&プライバシ

知識ベース、ガイドライン

エコシステム

適応的追跡・回復

Page 32: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

参照アーキテクチャに向けて

• IISF-SSR「クラウドサービス・セキュリティ・プライバシメタモデル」代表: 鷲崎 http://www.iisf.or.jp/SSR/

• EU ClouTプロジェクト http://clout-project.eu/

34

Platform(プラットフォーム)

Problem(問題)

Bridge(ブリッジ)

Solution(解決)Target

(対象)Application

(アプリケーション)

Infrastructure(インフラ)

メタモデル

クラウド

知識ベース

パターン

プラクティス

事例

要求

アーキテクチャ

新規 分析評価

H. Washizaki, “A Metamodel for Security and Privacy Knowledge in Cloud Services,” Proceedings of the 12th IEEE World

Congress on Services (IEEE SERVICES 2016)

Page 33: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

モデル駆動IoT開発[Patel]

35 P. Patel and D. Cassou, Enabling High-level Application Development for the Internet of Things, JSS 103, 2015.

• 関心事の分離

– ドメイン

– 機能

– 配備

– プラットフォーム

Page 34: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

モデル駆動IoT開発(つづき) [Patel] • モデル変換とコード生成

– 関心事ごとのDSL

– マッピングとリンク

36

P. Patel and D. Cassou, Enabling High-level Application Development for the Internet of Things, JSS 103, 2015.

Page 35: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

ゴール指向による接続・整合 GQM+Strateges

37

顧客満足度10%向上

製品の信頼性を改善する

製品の使いやすさを改善する

不具合指摘を20%削減

テスト効率を改善する

保守性を改善する

顧客満足度調査

不具合データ

プログラムの複雑さ

OG. 上位 組織目標

S. 戦略

S. 戦略

OG. 下位 組織目標

M. メトリクス

Jens Heidrich, Adam Trendowicz, “測定を基にした、ソフトウェア戦略とビジネス目標の整合” IPA/SEC資料 鷲崎ほか監訳, ゴール&ストラテジ入門: 残念なシステムの無くし方 (GQM+Strategies), オーム社, 2015

M. メトリクス

Page 36: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

Trace in all directions

Trace ANY (‘16-’20 代表: 鷲崎)

38

Req.

ER, UML

Simulink Goal models

SysML, UML

JavaScript

Java

C

Cloud

Reliable trace by transitive and

interactive recovery

Modularize and Reuse, change management Extraction Verification

Hironori Washizaki, Yann-Gael Gueheneuc, Foutse Khomh, “A Taxonomy for Program Metamodels in Program Reverse

Engineering,” 32nd IEEE International Conference on Software Maintenance and Evolution (ICSME)

Page 37: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

目次

• 正統なエンジニアリングと知識体系

• モデリングとモデル駆動開発

• モデリングと品質

• IoT時代のモデリング: 参照アーキテクチャと接続

• IoT時代のモデリング: 測定・学習さらには育成

• まとめ

39

Page 38: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

IoT/CPS時代の挑戦の可能性

40

岩野和生, 高島洋典, サイバーフィジカルシステムとIoT(モノのインターネット) 実世界と情報を結びつける ,情報管理 57, 2014.

K. Marzullo, NSF Cyber Physical Systems (CPS) Program, 2013.

P. Patel and D. Cassou, Enabling High-level Application Development for the Internet of Things, JSS 103, 2015.

参照アーキテクチャ

バリューや物理世界との接続モデリング

測定・予測および適応

データと機械学習による品質保証の改善

社会やビジネスとの接続

物理世界との接続

ヘテロな構成

不確実な未来

品質、特にセキュリティ&セーフティ&プライバシ

知識ベース、ガイドライン

エコシステム

適応的追跡・回復

Page 39: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

品質測定: 構造的複雑さ(結合性)

• Coupling factor (COF) [Abreuら 95] – オブジェクト指向クラス間凝集度のメトリック

– ETロボコン実証 [Washizaki06]

41

y = -4.0214x + 2.86

1

1.5

2

2.5

3

3.5

4

4.5

0 0.05 0.1 0.15 0.2 0.25 0.3COF

審査員の定性評価

n(n-1)/2 モジュール数: n

(頂点数)2-(頂点数)-(全継承子クラス数×2)

(継承を除く有向参照辺の数)

H. Washizaki, et al., “Experiments on Quality Evaluation of Embedded Software in Japan Robot Software Design Contest,”

28th IEEE/ACM International Conference on Software Engineering (ICSE 2006)

Page 40: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

品質測定: 構造的複雑さ(凝集性)

42

図A 図B

通常走行

ロボット

階段走行

坂道走行

ロボット情報

基本走行

走行管理

階段管理

坂道管理

図B

図A

• 責務が大きいクラスを含まない設計モデルは構造を十分検討されていない

N. Tsuda, H. Washizaki, Y. Fukazawa, “Evaluating Structural Validity of UML Class Diagrams by Measuring the Number of

Highly Responsible Classes,” 13th IASTED International Conference on Software Engineering (SE2014)

Page 41: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

品質測定: 意味的複雑さ • Class Relational

Structure Understandability (CRSU) [Nakamura11] – 構造と意味のギャップの定量化

43

y = 11.778x - 7.0508

1

1.5

2

2.5

3

3.5

4

4.5

0.7 0.75 0.8 0.85 0.9CRSU

審査員の定性評価

Y. Nakamura, K. Sakamoto, K. Inoue, H. Washizaki and Y. Fukazawa, “Evaluation of Understandability of UML Class

Diagrams by Using Word Similarity,” The Joint Conference of the 21st International Workshop on Software Measurement

(IWSM) and the 6th International Conference on Software Process and Product Measurement (Mensura), 2011

Page 42: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

事例: 機械学習によるメトリクス・システム改善

44

10 25

300

150

M. 関数の数

M. 実

行行

OK

NG

71

M. 関数の数

M. 実

行行

OK

NG

△ OK, ○ NG

N. Tsuda, et al. Iterative Process to Improve GQM Models with Metrics Thresholds to Detect High-risk Files, SANER'15 Doctoral

Page 43: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

人材育成に向けて

• 抽象化能力がカギ [Kramer07] – 詳細の捨象、共通部の一般化

– 「測定」による能力把握と向上

– 数学、問題中心のモデリング作業による習得

• 様々な領域把握と接続がカギ – 様々なビジネス、システム、ソフトウェア

– ゴール指向

• アーキテクチャ設計能力がカギ – 様々な品質特性: セキュリティ、セーフティー・・・

– 品質駆動設計

– 各種パターン

45

Jeff Kramer, “Is abstraction the key to computing,” Communications of the ACM, 50(4), 2007

Page 44: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

目次

• 正統なエンジニアリングと知識体系

• モデリングとモデル駆動開発

• モデリングと品質

• IoT時代のモデリング: 参照アーキテクチャと接続

• IoT時代のモデリング: 測定・学習さらには育成

• まとめ

46

Page 45: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

取り上げた技術のSWEBOK上のつながり

47

要求 構築 設計 テスティング

マネジメント プロセス

保守

構成管理 モデル・手法 品質

経済 プロフェッショナル

実践

要求の基礎 要求プロセス 要求抽出 要求分析 要求仕様 要求妥当性確認 実践上の考慮事項

設計の基礎 設計の主要問題 構造とアーキテクチャ ユーザインタフェース設計 設計品質の分析評価 設計の表記 設計戦略・手法 設計ツール

構築の基礎 構築の管理 実践上の考慮事項 構築技法 構築ツール

テストの基礎 テストレベル テスト技法 テスト関連計量尺度 テストプロセス テストツール

保守の基礎 保守の主要問題 保守プロセス 保守技法 保守ツール

SCMプロセスのマネジメント 構成の識別 構成制御 構成状態記録・報告 構成監査 リリース管理・配布 構成管理ツール

開始と範囲定義 プロジェクト計画 プロジェクト実施 レビュー・評価 終結 計量 マネジメントツール

プロセス定義 ライフサイクル プロセスアセスメント・改善 プロセス計量 プロセスツール

モデリング モデル種別 モデルの分析 開発手法

品質の基礎 品質マネジメントプロセス 実践上の考慮事項 品質ツール

プロフェッショナリズム 集団ダイナミクス・心理 コミュニケーションスキル

経済の基礎 ライフサイクル経済 リスク・不確実性 経済分析手法 実践上の考慮事項

計算基礎 数学基礎 エンジニアリング

基礎

UML MDD

•シナリオ •ゴール指向分析 •品質駆動設計・評価

•パターン •モデルの測定

セキュリティパターン

形式検証

クラウド

品質特性

Page 46: わしざき ひろのり 鷲崎 弘宜 - JEITA · 正統なエンジニアリング 職業人が果たす判断, 行為,助言が,社会で 実質的な価値を形成 5 松本吉弘,

まとめ

• 共通基盤上でより良く、早く、幸せに – 知識体系上での知識の整理、深耕、拡大 – プロフェッショナリズム

• モデリング再考 – モデリング成熟度とモデル駆動開発

• モデリングと品質 – 検証、作り込み

• IoT/CPS時代の課題と挑戦 – 品質特性の移り変わり – モデル駆動開発と参照アーキテクチャ – バリューとの接続モデル – 測定とシステム改善 – 人材育成

48