南山の先生

学部別インデックス

理工学部・ソフトウェア工学科

横森 励士

職名 教授
専攻分野 ソフトウェア工学
主要著書・論文 横森励士、梅森文彰、西 秀雄、山本哲男、松下 誠、楠本真二、井上克郎:“Javaソフトウェア部品検索システムSPARS-J”, 電子情報通信学会論文誌D-I, VolJ87-D-I, No.12, pp1060-1068, 2004.
Reishi Yokomori, Fumiaki Ohata, Yoshiaki Takata, Hiroyuki Seki, Katsuro Inoue: “An information-leak analysis system based on program slicing”, Information and Software Technology Vol.44 No.15 pp.903-910, 2002.
将来的研究分野 プログラム解析、ソフトウェアの再利用、ソフトウェア検索
担当の授業科目 「プログラミング応用」、「アルゴリズムとデータ構造」

ソフトウェアの開発を支援するために

現在の私たちの生活の中では、私たちの生活を便利にするために様々なコンピュータがありとあらゆる所で活動しています。例えば、航空機の管制システムや銀行のATMのような社会的なインフラストラクチャや、コンビニのPOSシステムや商品の流通管理システムのような企業内でのシステムから、携帯電話、ビデオのリモコンのような、身近な機械まで、ありとあらゆるところまで広がっています。

これらのシステムや機械は、制御や演算などの様々な命令を組み合わせたプログラムからなるソフトウェアによって制御されます。これらのプログラムは、主に人間によって開発されますが、社会の要請に合わせてソフトウェアは肥大化の一途をたどっているため、ソフトウェア内のプログラムが数億行の命令からなる場合も珍しくありません。こうなってくると、ソフトウェアの開発は人間の力では手に負えなくなり、何らかの支援が必要となってきます。

例えば、システムにおいて誤動作がおき、ソフトウェア内に不具合(バグ)がありそうだということがわかった場合を考えます。このような場合、普通は、バグの原因を考え、その原因となりそうなプログラムを絞り込んだ上で、そのプログラムの動作をチェックし、バグを修正します。このような作業をデバッグといいますが、色々な要素が複雑に絡むようになる、絞込みをしてもまだ膨大であるなどの原因から、プログラムが大きくなるにつれてこの作業は非常に困難になっていきます。数億行のなかのたった一行の不具合を見つける作業は、広大な砂漠の中の一粒の砂金を見つけるような途方にくれる作業です。また、バグを修正した後に、ちゃんと修正したかどうか、新たなバグを埋め込んでいないかを確認することも、大きなソフトウェアでは大変な作業です。

これらの作業を支援するために、ソフトウェア工学では様々な方法が提案されています。例えば、プログラム内の命令間の関係を把握して、ある命令と関連のある命令の集合を求めることで、問題点の起こりそうな場所の絞込みが非常にやりやすくなるでしょう。また、このような関係は、再テストの際に、必要なテストを絞り込むことにも利用できるでしょう。さらに、別の観点から考えると、他のシステムで利用されている実績のあるプログラムを上手に利用することで、最初からバグの少ないソフトウェアを効率的に開発できるとも考えられます。

このように、様々な観点から現状の問題点を洗い出し、それをうまく解決する方法を考えることがソフトウェア工学です。ソフトウェア工学におけるアプローチは様々で、プログラムの解析が必要になる場合もあれば、プログラムの性質を抽出することで解決できる場合もあります。

私が学生時代に学んだ一番大きいことは、現実の問題をどのようにモデル化して扱うことができるようにするかということの重要性です。現実をそのまま利用するのは、様々な要因が絡み合っているので、非常に難しく、必要な要素だけを抽出することが必要になってきます。このとき、どの方面から、どの要素に着眼点を置くか、その着眼点からどうモデルを構築するか、得られたモデルにどう意味づけを行っていくかということが問われてきます。このような自分の着眼点から物事を深く考えていくという行動は、研究だけに限らず、大学卒業後の社会人として極めて重要であると思います。一緒になって、考えていくことができればいいなと思っています。