実験による立証

安全という言葉は,「危害源(ハザード)がないこと」と定義される以上,「この車は,安全である」という言明は,「この車には,危害源がない」となります.従って,これを示すためには,危害源の不在証明をしなくてはならなくなります.一般に,否定的な言明は,証明することができません.それは,プログラムにおける誤りを示すことができないのと同様の構成になっています.単に構造だけではなく,ソフトウェアの比重が高い以上,実質的に同じといっても良いかもしれません.

この解決策として,形式的なアプローチが主張されます.それは形式科学とでもいうべき,数学や形式論理学での証明を使う.あるいは,天体の運行が形式科学の道具立てを使い,成功しているからということだろうと思います.しかし,経験科学,特に人間系が関わる分野では,必ずしも成功しているわけではないというのは,社会学や経済学の事例を持ち出すまでもなく明らかだろうと思います.

これは何も安全に限った話ではありません.経験科学でかつ人間系が関わるカテゴリに含まれるソフトウェア工学においても同様です.今回は,このソフトウェア工学の分野において,理論があってそれを証明しようとする時,いかなる立証の方法があるかという話になります.

つい最近,勧められた次の本を読みました.

「先進的な実験によって立証するソフトウェア工学の手引き」とでも訳せるタイトルです.「実験によって立証する」というのは,エンピリカルにあてた訳語です.通常は,カタカナをそのまま用いることが多いようです.

ちなみに,このソフトウェア工学におけるこの「実験によって実証する概念」は,Basili先生によって始められ,その端緒たなった論文は,通常「ソフトウェア工学における実験」が参照されています.

さて,上記の手引きが「先進的」かどうかは別にして,まさに「実験によって立証する」のだという精神に満ちています.もちろん,自然科学における実験に相当するものだけがその対象ではありません.以下に示すようなデータ収集手段があります.

  •  コントロール実験(Controlled Experiments)
  •  ケーススタディ(Case Studies)
  •  サーベイ(Survey Research)
  •  エスノグラフィ(Ethnographies)
  •  実地研究(Action Research)

最初のものは,まさに自然科学分野において用いられる方法で,実験群と対照群にわけて比較する方法です.後者になればなるほど,社会学的アプローチに近づきます.

さて,この本でおもしろいのは,11章になります.この章のタイトルは,ソフトウェア工学研究に対する実験によって立証する場合の手法の選び方(Selecting Empirical Methods for Software Engineering Research)です.

かなり辛辣にソフトウェア工学分野での実証主義的「実験」の有効性について述べた後,次の4つの哲学的立場があるとしています.

(1) 実証主義

自然科学にあるように,基本的な事実の観測から論理的な推論を通して結論を持ち引き出す.

(2) 構成主義(解釈主義)

科学上の知識は,人間から離れて存在することはできないと考える.例えば,科学的な理論に用いられる用語の意味は,社会的に構成されている.

(3) 批判理論

何らかの制約を加えられている思考システムから人々を解放することによって,その価値を判断する.実践を目指す

(4) プラグマティズム

全ての知識は,適当で不完全である.その価値は,どういう方法で入手したかに依存し,役に立つか否かが問題となる.真実は,観察者によって異なる.従ってコンセンサスが重要になる.

学校教育の成果か,一般には(1)が科学全般において用いられる方法と考えます.ただし,科学においてすら妥当な分野は限定されるというのは,カール・ポパーたちの議論から明らかになっています(明らかというのは,言い過ぎかもしれませんが,帰納法が潜在的に持つ限界は明らかで,論理は反証が見つかるまでは棄却できないというのは,一つの立場として認められると思います).

もう少し,科学の範囲を広くとると先に挙げた(2)〜(4)の立場が現れます.11章の結論は,(1)の適用範囲には限界があり,(2)〜(4)から適切に選ぶべきとなっています.このあたりの構成は,著者たちは言及していませんが,トゥールミンの「理性への回帰」における主張(特に6章の「方法再考」)と類似の議論になっています.

これはこれで良いとして,では実際にはどうするかということもあるだろうと思います.

ソフトウェア工学が扱う範囲で,例えばソフトウェア開発を行うということになると,多くの変項がありますし,人間系の問題ですから,そもそもそこでの理論を立てようがあるのかということになります.証すべき理論がなければ,それを(帰納によって)これこれのデータから示されるとすることはできないはずです.おそらく検証可能性を議論する以前の問題となることが多いように思います.

では,何が残るかと言えば,近代的合理性というよりは,何ごとかについての,筋の通った説明ということになるのではと思います.あるいは,理にかなっている,納得する説明ということでしょうか.もちろん,誰にとっての筋がとった説明かというのはありますから,構成主義者たちがいうように多様性をみとめ,プラグマティストたちがいうようにコンセンサスが重要で,批判理論者が主張するように,それは実践に関わるものでなくてはならないと思います.すくなくとも,実証主義的装いをしたまがいものだけは避けるべきと考えます.

(nil)