ソフトウェア分析学研究室の紹介(学生の皆さんへ)
研究室の特徴
上記に加えて,2021年4月に研究室に加わった笹倉万里子先生によるヒューマンコンピュータインタラクションに関する 研究を行っています. 研究テーマとしては,バーチャルリアリティ授業視聴システムの改良と評価,プログラミング教育支援システムの開発, 考古学データベースのためのインタフェース,量子アルゴリズムの学習支援システムなどがあります. 他には,ソフトウェア中のアルゴリズムやデータを隠蔽するためのプログラム難読化, ソフトウェアの盗用を発見するための電子透かしやバースマークなども研究しています. 当研究室では,研究論文の執筆・研究発表を通して,自分の考えを整理し, 他人に分かりやすく伝える技術を学んでもらうことを重視しています. 4年生も卒業までに1回は学会発表を目指してもらいます. 特別研究(卒業研究)や修士論文で取り組んだ研究内容が就職後にすぐ役立つことは 少ないかもしれませんが,研究を試行錯誤して進めたことや,論文執筆・研究発表の経験は,将来必ず役立つと考えています. また,当研究室は国際色豊かなことが特徴です. 留学生が在籍してることも多いです.
今日のソフトウェア開発とデータに基づく支援 当研究室の研究対象であるソフトウェア開発は,今日,非常に多様化しています. 伝統的なオンプレミスの開発案件に加えて,クラウドコンピューティング環境での開発やサービスが急増しています. また,オープンソースソフトウェア(OSS)の普及に伴い,Git,GitHubを利用したソーシャルコーディングによる開発が増えています. 商用ソフトウェア開発におけるOSSの利活用も日常的に行われています. 開発プロセスも,従来のウォーターフォール開発だけでなく反復型の開発が増えています. 形式手法も普及が進んでいます. AI技術を活用した,自動デバッグといった新しい技術も出てきています. 見方を変えると,新しいソフトウェア開発技術が次々と現れ,クラウドやOSSの利用も可能となっていることから,開発そのものは楽になってきているとも言えます. ただし,それ以上に,ソフトウェアの大規模化,高信頼性化,短納期化,低コスト化の要求が強まっており,ビジネスとしては楽にはなっていません. さらに,ソフトウェア業界の成長・多様化に伴い,契約履行,特許,著作権,ライセンス等についての訴訟が頻発しています. 従って,様々な技術をうまく活用し,法的側面への対処もしっかりした上で, いかに大規模ソフトウェアをきっちり作るか,ということが大きな課題となっています. 当研究室では,ソフトウェア開発支援を行うにあたり,データ計測と分析を重視しています. ソフトウェア開発はその大部分の工程が人手により行われるため,KKD(勘,経験,度胸)に頼りがちです. データ計測・分析の基本的な狙いは,勘と経験に頼っているソフトウェア開発に,定量的な裏づけを与えることです. 客観的なデータに基づいて,開発計画の立案を行ったり,開発プロセスの問題点を発見したり,プロセス改善の提案を行います. また,ソーシャルコーディング時代においては,開発組織ではなく,開発者個人の技術や能力に焦点が当たります. 当研究室では,GitHub上のプログラマの活動を分析したり, ソフトウェア開発行動記録システムTaskPit などにより開発行動を分析することで,開発者の教育や採用の支援を目指します.
ソフトウェア開発に関するデータ 日本のソフトウェア開発の成功率は所説様々ですが,ソフトウェア開発データ白書によると,70%程度です. つまり,10回に3回は失敗していることになります. AI技術を活用し,失敗を減らしていくべき分野であるといえます. そして,その基礎となるビッグデータ/スモールデータが急激に生み出されつつあるのがこの分野です. 近年のOSSの普及に伴い,ソフトウェア開発リポジトリホスティングサービスが発展してきました. その代表的なサービスの一つであるGitHubでは,約2000万のソフトウェア開発リポジトリが公開されており, 各リポジトリにはソースファイル単位の詳細なソフトウェア開発履歴が記録されています. これらリポジトリはまさにビッグデータであり,世界中の研究者が分析を進めています. GitHub以外にも, Socorroなどのクラッシュレポートリポジトリ, Mavenなどのライブラリリポジトリ, Travis-CIやJenkinsなどの継続的インテグレーションのリポジトリ, Gerrit Code Review,Rietveldなどのコードレビューリポジトリなども分析されています. また,プログラミング技術に関するQ&AサイトであるStack Overflow上のデータの分析や,Google Play上のAndroidモバイルアプリの分析, Aizu Online JudgeやTopCoderなどのオンラインジャッジシステム上のプログラミング課題とその解答の分析など, 分析の題材となるデータは枚挙にいとまがありません. このような,ソフトウェア開発リポジトリに蓄積されているデータを分析する研究分野は, 「ソフトウェアリポジトリマイニング」と呼ばれています.詳しくは,日本ソフトウェア科学会第 33 回大会における公演資料 や, コンピュータソフトウェア誌の解説記事 をご覧ください. その他のデータとしては, ソフトウェア開発企業において計測される開発プロジェクトの実績データ, 個々のソフトウェア開発者から計測されるキーストローク,マウス操作,脳波, 注視点などの行動履歴データ, ソフトウェアの仕様書やバグレポート等の自然言語で書かれたドキュメントなどが研究対象となります.
研究テーマ
|