渡部研究室  · 2019-01-16 · • erlang/elixirで実装...

16
1 渡部研究室 Programming Systems Group 様々なプログラミング・パラダイム(プログラミングに関する考え方) 例:OOP,関数型,自己反映,アクター,AOP,COP,FRP 基礎 諸性質を明らかにする 応用 新しい応用領域の 開拓 表現 使いやすい言語の 設計と実装 ・新しいプログラミングパラダイム ・プログラミング技術にもとづく形式手法 ・言語設計と形式手法の新しい応用領域の開拓 www.psg.c.titech.ac.jp

Upload: others

Post on 19-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

�1

渡部研究室Programming Systems Group

様々なプログラミング・パラダイム(プログラミングに関する考え方)例:OOP,関数型,自己反映,アクター,AOP,COP,FRP

基礎諸性質を明らかにする

応用新しい応用領域の

開拓

表現使いやすい言語の設計と実装

・新しいプログラミングパラダイム・プログラミング技術にもとづく形式手法・言語設計と形式手法の新しい応用領域の開拓

www.psg.c.titech.ac.jp

Page 2: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

プログラミングパラダイム

• プログラミングを行う上での規範・考え方 - 例:手続き的,関数,OO,論理型,制約,etc. • 自己反映(reflection),AOP, COP, FRP, etc.

• 研究の方向 - 新しいパラダイムに基づく言語やプログラミング方法論が,プログラムの実行効率,開発効率,安全性などの向上を支援することを様々な方法で実証する. • 実証方法:定量的,定性的,形式的,経験的

• 渡部研における関連プロジェクト - FRP言語によるCPS開発の高度化 - 並行システムにおける文脈指向プログラミング

�2

Page 3: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

関数リアクティブプログラミング(FRP)

�3

リアクティブな系の宣言的な記述を可能にするプログラミングパラダイム

例:ファンの制御module FanController # モジュール名 in tmp : Float, # 温度センサ hmd : Float # 湿度センサ out fan : Bool # 扇風機のスイッチ use Std # 標準ライブラリ

# 不快指数 node di = 0.81 * tmp + 0.01 * hmd * (0.99 * tmp - 14.3) + 46.3

# 扇風機の制御 node init[False] fan = di >= th

# 閾値(ヒステリシス制御付) node th = 75.0 + if fan@last then -0.5 else 0.5

外界から非同期的に与えられるシグナルやイベントを時変値(Time-Varying Values)として抽象化

GUI, Webアプリケーションへの応用(React, Rx, Elmなど)

tmp

hmd

fandi

temperature sensor

humidity sensor

fan

th

FanController

Emfrpによる記述

Page 4: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

CPS向けのFRP言語

• CPSはリアクティブな系のひとつ- CPS: Cyber-Physical Systemコンピュータと物理系が混在したシステム

• 小規模システムから構成されるCPSへの活用- チャレンジ:低速CPU,少メモリ,省電力化,分散化,高信頼化

• プロジェクト- Emfrp, Distributed-Xfrp• 小規模・分散システム向けのFRP言語

- 純粋関数型言語,Glitch-free- 実行時メモリサイズは静的に決定

• 今後の課題- 非同期・分散処理,並列化,低消費電力化- 型システム,形式検証

�4

CFRPによるライントレースと迷路探索のデモ (Arm Cortex-M3)

Watanabe, T., A Simple Context-Oriented Programming Extension to an FRP Language for Small-Scale Embedded Systems, COP 2018, ACM. Sawada, K. & T. Watanabe, Emfrp: A Functional Reactive Programming Language for Small-Scale Embedded Systems, CROW 2016, ACM.

Page 5: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

module Balancer in gyroY : Int, # gyroscope (y-axis) accX : Int, # accelerometer (x-axis) encL : Int, # left motor encoder encR : Int # right motor encoder out motorL : Int, # left motor motorR : Int # right motor use Std ... # definitions of constants

node init[0] angle = (angle@last + gyroY * update_time_ms) * 99 / 100

node speedL = encL - encL@last node speedR = encR - encR@last node init[0] distL = distL@last + speedL node init[0] distR = distR@last + speedR

node risingAngleOff = gyroY * angle_rate_ratio + angle node init[0] motor = motorSpeed(motor@last + (angle_resp * risingAngleOff + dist_resp * (distL + distR ) + speed_resp * (speedL + speedR)) / 100 / gear_ratio)

node diffSpeed = (distL - distR) * dist_diff_resp / 100 node motorL = if accX > 0 then motor + diffSpeed else 0 node motorR = if accX > 0 then motor - diffSpeed else 0

例:倒立振子ロボット

�5

Pololu Balboa 32U4(ATmega 32U4, 32KB

Flash, 2.5KB RAM)

Page 6: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

並行文脈指向プログラミング

• 文脈指向プログラミング(COP) - 変化する実行時環境に適応するソフトウェアを効果的に開発する技術 - プログラム中の文脈に依存する記述をモジュール化 • 並行文脈指向プログラミング(CCOP) - 並行システム向けのCOP - 文脈の変化と計算が並行に行われる際に生じる問題を広域自己反映計算を用いて解決 • Erlang/Elixirで実装 - 応用:モバイルデバイス,センサネットワーク等

�6

O

A

B

竹野・渡部,アクターモデルに基づく並行文脈指向プログラミング機構の実装と評価,コンピュータソフトウェア, 33(1), 2016. Watanabe, T. and S. Takeno, A Reflective Approach to Actor-Based Concurrent Context-Oriented Systems, COP '14.

Page 7: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

プログラミング言語から形式手法へ

• 形式手法(formal method) - 数学(主に数理論理学)を基盤として信頼性・頑健性の高いソフトウェアを構築するための各種手法 • 形式仕様記述,検証,解析など

• 研究の方向 - プログラミング言語設計やソフトウェア工学分野で発展してきた抽象化・モジュール化手法を積極的に取り入れることで,形式手法をより身近で実用的なものにしたい.

• 渡部研における関連プロジェクト - Actario: アクターモデルのCoqによる形式化(2015-) - 故障挿入機構を備えたモデリング言語Sandal(2014-) - 検証済みプログラムの進化と発展(2012-) - 実時間システム用プログラムの自動合成(2010-2011) - アスペクト指向によるスケーラブルな仕様記述(2005-2007)

�7

Page 8: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

検証済みソフトウェアの進化と発展

• ソフトウェアは進化・発展する - 機能追加・変更,修正,再利用等 • 検証済ソフトウェアの変更は高コスト - 検証済みソフトウェア=コード+仕様+証明 • これらの一貫性を保ちつつ進化・発展するには?

• ECoq:対話的修正機構を備えた定理証明支援系 • プログラム中の帰納型に対する変更から,対応する修正箇所の候補を自動的に発見し,検証済プログラムの変更を手助けする. • 特に検証済コンパイラの発展などに適した手法である.

�8

Moriguchi, S. & T. Watanabe, An Interactive Extension Mechanism for Reusing Verified Programs, ACM SAC 2013. 森口草介・渡部卓雄, 定理証明支援系Coqへの対話的修正機構の導入, 情報処理学会論文誌(PRO), 5(4), 2012.

Page 9: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

言語設計と形式手法の新しい応用領域の開拓

• プログラミング言語設計や形式手法の考え方は,ソフトウェア以外にも,信頼性の高いシステムの構築や複雑なシステムの分析に使えるはず - 扱いやすい形で対象が表されていることが重要 • 抽象度 vs. 精密さ • 大きさ・複雑さ

• 関連プロジェクト - ソフトウェアの理解支援・デバッグ支援 - 人的誤りに対する障害耐性の分析

�9

Page 10: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

アクターモデルのデバッグ支援

• Actoverse - 並行計算モデルのひとつであるアクターモデルを対象にリバースデバッグを可能にしたデバッガ - GUIを通して,任意の時点におけるメッセージ通信の巻き戻しや再実行が可能

�10

Main asyncAnd creditChecker addressChecker

SetCount(2)

true

true

true

Main asyncAnd creditChecker addressChecker

SetCount(2)

“CARDNUMBER”

true

true

“ADDRESS”“CARDNUMBER”

“ADDRESS”

(a) (b)

Shibanai, K. & T. Watanabe, Actoverse: A Reversible Debugger for Actors, AGERE '17, ACM, 2017.

Page 11: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

ソフトウェアの理解支援

• 大規模なシステムのソースコードを理解するには,様々な視点および抽象度で見ることが有効 • CODE (Code-Oriented Diagram Editor) - 利用者が作成した複数の視点(図式)とコードの対応を自動的に維持し,実行時に対応箇所を図式上でリアルタイム表示することで理解を支援する

�11

High-levelDiagram

UML Reverse

Tool

CODE

Display

Map

1

3

4

5

2

public class Main { public static void . int i, j; for (i=0; i<10; i++) j = i + 1; } } public void hoge(){ int j; }}

UMLDiagram

source code

Ohmura & Watanabe, Design and Implementation of an Advanced Source Code Reading Tool for Framework-based Software, WCTP 2015.

Page 12: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

人的誤りに対する障害耐性の分析

• 人間が実行する仕事の手順書には,人的誤りを含む各種障害に対する対策が盛り込まれている.その障害耐性が十分なものであるか否かを形式手法の考え方を用いて検証する. • 研究プロジェクト - ソフトウェア故障挿入(SFI)+モデル検査 • プロセス代数によってモデル化した手順に人的誤りに相当する障害を自動挿入し,モデル検査による網羅的検査によって障害耐性を分析する手法を提案 • 事例:病院における検査,航空レーダー管制システム

Nagatou, N. and T. Watanabe, A Model-Checking Based Approach to Robustness Analysis of Procedures under Human-Made Faults, Intl. J. of Industrial Engineering, Vol. 22, No. 4, 2015.

Page 13: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

最近の主な論文

• Shibanai & Watanabe, Distributed Functional Reactive Programming on Actor-Based Runtime, AGERE '18, ACM, 2018. • Watanabe, A Simple Context-Oriented Programming Extension to an FRP Language for Small-Scale Embedded Systems, COP '18, ACM, 2018. • 高桑・渡部,多言語に対応した衛生的マクロ機構導入方式,コンピュータソフトウェア,35(2), 2018. • Shibanai & Watanabe, Actoverse: A Reversible Debugger for Actors, AGERE '17, ACM, 2017. • Lavery & Watanabe, An Actor-Based Runtime Monitoring System for Web and Desktop Applications, SNPD '17, IEEE, 2017. • Watanabe, Towards Reflection in an FRP Language for Small-Scale Embedded Systems, LASSY '17, ACM, 2017. • Sawada & Watanabe, Emfrp: A Functional Reactive Programming Language for Small-Scale Embedded Systems, CROW '16, ACM, 2016. • 竹野・渡部,アクターモデルに基づく並行文脈指向プログラミング機構の実装と評価,コンピュータソフトウェア, 33(1), 2016. • Takeno & Watanabe, A Reflective Implementation of an Actor-based Concurrent Context-Oriented System, ARM '15, ACM, 2015. • Nagatou & Watanabe, A Model-Checking Based Approach to Robustness Analysis of Procedures under Human-Made Faults, J. Industrial Eng., 22(4), 2015.

�13

Page 14: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

最近の卒業論文

• 2019年(仮題) - 組込みシステム向けFRP言語のための型システム - 並行文脈指向プログラミングによるセンサーネットワーク - アクターモデルのためのデバッガの効率改善 • 2018年 - 関数型リアクティブプログラミングへの通信処理の導入 (松村有倫) - 組み込みシステム向けFRP言語からSimulinkへのモデル変換 (浅野将希)

• 2017年 - Actoverse: A Message-Oriented Online Debugger for Actor Systems (柴内一宏) - 多言語に対応した衛生的マクロ機構導入方式 (高桑健太郎)

�14

参考:2018年度卒論発表会 2/12(火) 9:30-17:00 W834

Page 15: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

最近の修士論文

• 2019 - Distributed Functional Reactive Programming on Actor-Based Runtime (柴内一宏) - 構文拡張可能な言語のための拡張PEGの設計と実装 (高桑健太郎) • 2018 - Functional Reactive Programming with Asynchronous Execution for Resource-Constrained Reactive Systems (Wang Sheng) - アクターモデルを用いた小規模組み込みシステム開発の効率化 (小川真司)

• 2017 - マイクロコントローラのための実用的な関数リアクティブプログラミング言語 (澤田賢祐) - 無線センサーアクターネットワークへの分散文脈指向プログラミングの適用 (中野瑞樹)

�15

参考:2018年度修論発表会 2/4-5 9:10-18:00 W832 (渡部研の2名は2/5)

Page 16: 渡部研究室  · 2019-01-16 · • Erlang/Elixirで実装 -応用:モバイルデバイス,センサネットワーク等 6 O A B 竹野・渡部,アクターモデルに基づく並行文脈

博士論文

• 定理証明支援系によるプログラム検証の対話的修正に関する研究 (2013 森口草介) • 強制可能なセキュリティポリシーの性質に関する研究 (2006 永藤直行) • アスペクト指向的なモジュール記述を可能とする仕様記述言語 (2005 山田聖) • 再利用可能な拡張機構を備えた言語処理系 (2001 佐伯豊) • 拡張の合成を容易とするメタレベルアーキテクチャの研究 (2000 田中哲) • A Study on a Methodology of Constructing Dynamically Adaptable Software Systems (1999 天野憲樹)

�16