Mercurial > hg > Papers > 2015 > atton-sigse
annotate sigse.tex @ 10:15ca58a54b6a
Replace punctuation by sed
author | Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 09 Dec 2014 14:13:39 +0900 |
parents | 2ec35bc5e0d5 |
children | 0863e8f0a3d6 |
rev | line source |
---|---|
2 | 1 \documentclass{ipsjpapers} |
2 | |
3 % ユーザが定義したマクロなど. | |
4 \makeatletter | |
5 \let\@ARRAY\@array \def\@array{\def\<{\inhibitglue}\@ARRAY} | |
6 \def\<{\(\langle\)\nobreak} | |
7 \def\>{\nobreak\(\rangle\)} | |
8 \def\|{\verb|} | |
9 \def\Underline{\setbox0\hbox\bgroup\let\\\endUnderline} | |
10 \def\endUnderline{\vphantom{y}\egroup\smash{\underline{\box0}}\\} | |
11 \def\LATEX{\iLATEX\Large} | |
12 \def\LATEx{\iLATEX\normalsize} | |
13 \def\LATex{\iLATEX\small} | |
14 \def\iLATEX#1{L\kern-.36em\raise.3ex\hbox{#1\bf A}\kern-.15em | |
15 T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX} | |
16 \def\LATEXe{\ifx\LaTeXe\undefined \LaTeX 2e\else\LaTeXe\fi} | |
17 \def\LATExe{\ifx\LaTeXe\undefined \iLATEX\scriptsize 2e\else\LaTeXe\fi} | |
18 \def\Quote{\list{}{}\item[]} | |
19 \let\endQuote\endlist | |
20 \def\TT{\if@LaTeX@e\tt\fi} | |
21 \def\CS#1{\if@LaTeX@e\tt\expandafter\string\csname#1\endcsname\else | |
3
056c4b8a1f57
Wrote author, title
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
22 $\backslash$#1\fi} |
2 | 23 |
3
056c4b8a1f57
Wrote author, title
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
24 %\checklines % 行送りを確認する時に使用 |
2 | 25 \begin{document}%{ |
26 % 和文表題 | |
3
056c4b8a1f57
Wrote author, title
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
27 \title{圏によるプログラムの変更の形式化} |
2 | 28 % 英文表題 |
3
056c4b8a1f57
Wrote author, title
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
29 \etitle{Categorical Formalization of Program Modification} |
2 | 30 % 所属ラベルの定義 |
3
056c4b8a1f57
Wrote author, title
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
31 \affilabel{ie-ryukyu}{琉球大学工学部情報工学科 \\ Department of Information Engineering, University of the Ryukyus.} |
2 | 32 % 和文著者名 |
3
056c4b8a1f57
Wrote author, title
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
33 \author{比嘉 健太\affiref{ie-ryukyu}\and |
056c4b8a1f57
Wrote author, title
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
34 河野 真治\affiref{ie-ryukyu}} |
2 | 35 % 英文著者名 |
6 | 36 \eauthor{Yasutaka Higa\affiref{ie-ryukyu}\and |
37 Shinji Kono\affiref{ie-ryukyu}} | |
2 | 38 |
39 % 和文概要 | |
40 \begin{abstract} | |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
41 本研究ではプログラムの信頼性を保ちながら開発するための手法を提案することを目的とする. |
5
19c10b1b8287
Wrote abstract in Japanese
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
42 |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
43 プログラムの信頼性が変化するのはプログラムの変更時である. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
44 プログラムの変更を表現するデータ構造 Delta を定義し,異なるバージョンのプログラムを同時に実行可能にする. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
45 異なるバージョン間のプログラムのトレースを比較し,信頼性の変化の指摘とデバッグの支援を行なう手法を提案する. |
5
19c10b1b8287
Wrote abstract in Japanese
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
46 |
2 | 47 \end{abstract} |
48 % 英文概要 | |
49 \begin{eabstract} | |
9
2ec35bc5e0d5
Add english abstract
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
8
diff
changeset
|
50 We will propose software development method with improve reliability of program. |
2ec35bc5e0d5
Add english abstract
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
8
diff
changeset
|
51 |
2ec35bc5e0d5
Add english abstract
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
8
diff
changeset
|
52 If program modified, reliability change with relation. |
2ec35bc5e0d5
Add english abstract
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
8
diff
changeset
|
53 We define Delta that data structure for expression of program modification. |
2ec35bc5e0d5
Add english abstract
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
8
diff
changeset
|
54 Delta be able to execute program has multiple version at the same time. |
2ec35bc5e0d5
Add english abstract
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
8
diff
changeset
|
55 |
2ec35bc5e0d5
Add english abstract
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
8
diff
changeset
|
56 We propose method to visualising reliability and support debug by compare traces between different version programs. |
5
19c10b1b8287
Wrote abstract in Japanese
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
4
diff
changeset
|
57 |
2 | 58 \end{eabstract} |
59 | |
60 % 表題などの出力 | |
61 \maketitle | |
62 | |
4
3c333203c8c5
Delete unknown charcode
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
3
diff
changeset
|
63 %}{ |
2 | 64 |
65 % 本文はここから始まる | |
66 \section{はじめに} | |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
67 プログラムの信頼性を保ちながら開発するための手法を提案する. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
68 プログラムの変更時に信頼性が変化すると仮定し,圏を用いてプログラムの変更を形式化する. |
6 | 69 |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
70 本研究ではプログラムの変更を Monad として表現する. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
71 Monad とはメタ計算と対応付けられたデータ構造である. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
72 Monad として任意の異なるバージョンのプログラムを同時に実行するデータ構造 Delta を定義した. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
73 プログラムの変更は特定バージョンの Delta から次のバージョンの Delta への変換として記述する. |
6 | 74 |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
75 ここで,任意の2つのバージョンのプログラムを同時に実行する. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
76 実行した際に振舞いが変化する点がバージョン間における変更点である. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
77 変更点を自動で検出することにより,バージョンが変わることによって信頼性の変化する部分を指摘する. |
6 | 78 |
79 \section{プログラムの変更を表す Delta} | |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
80 プログラミング言語 Haskell においてデータ構造 Delta を定義した. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
81 Delta は全てのバージョンの実行結果の値を保持するデータ構造である. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
82 値の変更は値から Delta を返す関数として定義する. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
83 返す Delta に内包する値を複数個持たせることにより,複数のバージョンを表現する. |
6 | 84 |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
85 ここで,異なるバージョン数を持つ Delta や関数の組み合せを考える. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
86 その際,前のバージョンの組み合せを保存しつつ新たな変更も取り入れるように組み合せる必要がある. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
87 バージョンの組み合せを表現するために Delta を Monad とする. |
6 | 88 |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
89 Monad とはデータ構造とメタ計算を対応付ける手法である\cite{moggi}. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
90 ここでのメタ計算とはバージョン間の組み合せを一意に決めるルールである. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
91 関数の実行時にメタ計算も含めて実行することにより,異なるバージョンに存在するの独立した計算も全て実行することができる. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
92 なお,データ構造を Monad として定義する際に満たすべき Monad則が存在するが,Monad則を満たしていることは証明支援系言語Agda\cite{agda}によって証明した. |
6 | 93 TODO: ルールを得るサンプルを書くかな? or Delta の定義 |
94 | |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
95 よって,プログラムをデータ構造 Delta とDelta を返す関数として記述することにより,全てのバージョンを同時に実行できるプログラムが得られる. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
96 ここで,バージョンとはある一意な Delta の組み合せの列として表現される. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
97 組み合せの列を比較することにより異なるバージョン間の比較ができると考えた. |
6 | 98 |
99 | |
100 \section{任意の2つのバージョンを実行する Parallel Debugger} | |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
101 任意の2つのバージョンを同時に実行することによりデバッグを支援する手法 Parallel Debugger を提案する. |
6 | 102 |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
103 Delta によって表現されたプログラムの任意のバージョンを2つ選ぶ. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
104 2つのバージョンを同時に実行し,実行結果が変化する点を検出する. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
105 実行結果の比較を行なうことにより,プログラムの変更時に混入したバグを発見できるのでは無いかと考えた. |
6 | 106 |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
107 さらに,2つのバージョンのうち片方を実行しつつ,もう片方はデバッグモードとして実行する. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
108 バージョンアップ前の挙動をバージョンアップ後も保存しているか自動で確認することも可能であると考えている. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
109 加えて,テストなどと併用することにより異なるバージョン間における信頼性や品質の比較も可能である. |
6 | 110 |
111 | |
112 \section{まとめと課題} | |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
113 本研究ではプログラムの変更をMonadによって表現した. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
114 定義したデータ構造 Delta により全てのバージョンを同時に実行できることを確認した. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
115 Delta における特定のバージョン2つを同時に実行することにより,デバッグの支援や信頼性の比較を行なう手法 Parallel Debugger を提案した. |
6 | 116 |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
117 今後の課題としては大きく3つある. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
118 1 つめは Delta におけるプログラムの表現能力である. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
119 可能なプログラムの全ての変更を Delta によって表現可能かどうか調べなくてはならない. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
120 この課題については Delta と他の Monad との組み合せが可能であれば可能であると考えている. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
121 今回 Delta を実装した Haskell においては入出力の処理が Monad として表現される. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
122 そのため,入出力を含めた変更は Monad との組み合せが必要になる. |
6 | 123 |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
124 2 つめはDelta におけるそれぞれのバージョンのトレースを得ることである. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
125 異なるバージョンにおいて実行結果が変化する点を指摘するには実行結果が比較可能でなくてはいけない. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
126 このためにバージョンごとの実行結果やトレースを得る必要がある. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
127 この問題に対しても Monad との組み合せによって解決しようと考えている. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
128 トレースを得る Monad を定義し,そのMonadと Delta との組み合せで各バージョンのトレースを得る. |
6 | 129 |
10
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
130 3 つめは Delta を圏として表現することとその解析である. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
131 Monad は Kleisli圏の Kleisli Triple との対応が存在しており\cite{category},Deltaもある圏を構築すると考えている. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
132 特に, Parallel Debugger は圏における Product と対応すると考えている. |
15ca58a54b6a
Replace punctuation by sed
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
9
diff
changeset
|
133 圏における他の性質から,プログラムの変更の性質の解析や他の手法を提案する. |
2 | 134 |
135 | |
4
3c333203c8c5
Delete unknown charcode
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
3
diff
changeset
|
136 %}{ |
2 | 137 |
138 \begin{thebibliography}{10} | |
139 | |
7 | 140 \bibitem{moggi} Eugenio Moggi: Notion of Computation and Monads(1991) |
141 \bibitem{category} Michael Barr and Charles Wells: Category Theory for Computing Science(1989) | |
9
2ec35bc5e0d5
Add english abstract
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
8
diff
changeset
|
142 \bibitem{proofs-and-types} Jean-Yves Girard, Paulr Taylor, Yves Lafont: Proofs and Types(1990) |
2ec35bc5e0d5
Add english abstract
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
8
diff
changeset
|
143 \bibitem{agda} The Agda Wiki - Agda: \\ http://wiki.portal.chalmers.se/agda |
2 | 144 |
145 \end{thebibliography} | |
146 | |
4
3c333203c8c5
Delete unknown charcode
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
3
diff
changeset
|
147 %}{ |
2 | 148 |
149 \end{document} |