RESEARCH

研究テーマ

ソフトウェア工学は、品質の高いソフトウェアを、予算の範囲内でできるだけ効率よく開発する方法を考える学問分野です。 全体としては、何を作るべきかを正しく捉える方法、どのように作るかを設計する方法、誤りなくプログラムを記述する方法、できあがったプログラムが設計通りかを確認する方法、目的を達成しているかをテストする方法などから構成されています。 奈良先端大ソフトウェア工学研究室は、その中でも、ソフトウェア開発・プログラミングを効率的に行うための環境、道具や手順を考えるところに注力する研究室です。 ソフトウェアの開発や利用における新たな基盤技術の確立をめざし、ソフトウェア開発の現在の実践方法を分析し、新しい開発支援技術や方法論を構築する研究開発に取り組んでいます。 研究の素材は、ソフトウェアに関するあらゆるデータです。ソースコードを軸として、テストやデバッグといった実行時の情報、ソフトウェアについて書かれたドキュメント、 ソースコードの編集や読解のような開発者の活動、そして、ソフトウェアの開発や利用に携わる個人・コミュニティ間でのコミュニケーションといったビッグデータがあります。 これらのデータに対して、ソースコードの構文解析や意味解析、動的解析といったプログラミング言語に由来する技術と、 機械学習、自然言語処理、ゲーム理論、社会学、神経科学といった多様な技術を組み合わせて、ソフトウェア開発を支援する新しいツールや、開発データの分析を実施し、 得られた成果をソフトウェアに関わる企業やオープンソースソフトウェアコミュニティに提供しています。 ソフトウェア工学とは何だろうというのが漠然と気になる人には、以下のような情報源があります。

  • 書籍
    • 人月の神話: ソフトウェア工学の古典、経験談を収集した書籍。「進捗が遅れているソフトウェアプロジェクトに人を追加すると、プロジェクトがさらに遅れる」という話で有名。
    • Making Software: 伝統的なソフトウェア工学研究を幅広く紹介した書籍。
    • Software Engineering at Google: 実践的なソフトウェア工学アプローチを紹介。
  • Webサイト

主なトピック

“Paradigm” バグを防ぐ

ソフトウェアのバグの予防と修正に取り組んでいます。 具体的にはソースコードの自動合成や自動バグ修正、構造や機能の可視化による開発者の作業支援を研究しています。

プログラマの能力・活動を調べる

ソフトウェア開発時に発生する作業の多くは、開発者が頭の中で行う認知的・心理的プロセスです。 私たちは視線や脳活動の計測から、開発者がいつものようにソフトウェア開発を行っているかを定量的に明らかにしています。 さらに、プログラミング教育の効果をソースコードの内容から評価するなど、教育支援環境の開発にも取り組んでいます。

製品を蓄積・活用する

ソフトウエア製品の活用により生じる問題(バグ、脆弱性、依存関係など)の解決などに取り組みます。 具体的にはライブラリの再利用に関する分析や、説明書(README)の記述に関する研究を行っています。

Community 共同作業を促進する

ソフトウェア開発には多くの人が関わります。 そのために、私たちはオープンソースソフトウェアのコミュニティに焦点を当て、共同作業を促進させる研究を進めています。 例えば、コードレビューや寄付、バグレポートに関する研究などがあります。

NTTデータ、富士通研究所、株式会社ギブリー等との共同研究と、NEC、有人宇宙システム株式会社、SAPの技術者らとの連携を通じて、実社会で役に立つ技術の開発や、研究室で培った技術の実証実験に取り組んでいます。 教員だけでなく学生も、研究テーマの関連性や興味に応じて、これらの研究に参加しています。

これまでの研究テーマ(学生別)

具体的な個別の研究内容についてはこちらの表を参照してください。 学生ごとに、研究の背景、やったこと、結果、どのように対外発表を行ったかをまとめています(順次追加中です)。

企業との連携

研究活動に必要な能力

ソフトウェアという目に見えない対象を扱うため、形のないものを記号や絵で表現する数学的な考え方が重要になります。また、具体的に調査する事例から全体の状況を推測する、統計学の知識があると便利です。プログラミング活動自体を研究対象とする性質上、プログラミングに関する技術や知識があると非常に役立ちます。ただし、研究を始めるにあたって特別な技術や知識が必要というわけではありません。 当研究室に来てから初めてプログラミングについて深く学び始めたという学生もたくさんいます。

研究としてのソフトウェア開発

研究室では、研究成果をソフトウェアとして実装し、社会に提供することも重要な活動と考えています。完全遠隔授業システム C2Room(開発時名称:カメレオン)や、入出力例から SQL を合成するシステム PATSQL複数回の同一修正を自動化する DevReplayなどが、研究で得られた知見を外部に提供しているものの一例です。 プログラミングが好き、得意という学生には、社会、企業に直接影響を与えることのできる機会として、積極的に関わってもらえればと考えています。

本研究室で身につく能力

ソフトウェア開発・利用に関する専門家として、複数の開発者が協力して活動するための方法論やツール、ソフトウェア品質の評価方法といった知識を身につけることができます。 また、ソフトウェア開発に関する最新動向についての議論を通じて、多様な開発プロセスや開発環境、プログラミング言語それぞれの意義についての実践的な知識を得ることができます。

資料

LABORATORYGUIDE2019_2020_is5.pdf

奈良先端科学技術大学院大学 先端科学技術研究科 情報科学領域

ソフトウェア工学研究室

〒630-0192 奈良県生駒市高山町8916-5

© 2013-2023 Software Engineering Laboratory, Graduate School of Information Science, Nara Institute of Science and Technology.