研究トピック

ソフトウェアシステムは現代社会にとって欠かせないものとなっています.ほとんどの企業がシステムを中心に経済活動を行うため,システムの優劣が企業の将来に大きな影響を与えるといっても過言ではありません.ソフトウェア設計学研究室では,安心安全なシステムを構築するソフトウェア技術を開発することで,社会に貢献できるように取り組んでいます.具体的には,ソースコード,テストコード,ネットワーク,インフラストラクチャなどの現代システムにおける必須要素を研究対象とし,設計や開発,品質管理,運用工程を効率化しています. 以下では,当研究室の研究を大きく3つに分け,紹介します.

ソフトウェア開発を加速させるAI

ソフトウェア開発の高速化は年々進んでおり,その中心的な技術が人工知能(AI)を活用した開発工程の自動化です.例えば,身近な例で挙げると,GitHub CopilotのようにLLM(大規模言語モデル)を用いて,プログラミングの大部分をAIが代わりに代行する世界が近づいてきています.我々はプログラミング以外の工程でも,人工知能×ビッグデータ分析をフル活用して,これまで開発者が実施してきた工程を自動化して,ソフトウェア開発の更なる高速化を実現する研究に取り組んでおります.

NoOps (No Operation) を実現するソフトウェア開発自動化

質の高いソフトウェアをより短い期間でユーザーに提供するために,モダンなソフトウェア開発プロジェクトではDevOpsと呼ばれる,テストやリリースの自動化が行われています.例えば,ソフトウェア変更のたびに,コンパイルやテストなどを自動化する継続的インテグーションもその取り組みの一つです.当研究室では,DevOpsをさらに発展させ,不具合検出・修正や運用監視など,より広い範囲の運用の自動化により,人手が全く不要となるNoOpsの実現を目指しています.

ソースコードやプロジェクトのあるべき姿を追求するソフトウェアアナリティクス

現代のソフトウェア開発では,Gitや,Pull request,不具合管理システムなど様々なシステム・ツールを駆使して,開発が効率化されています.これらのシステムを用いることで,開発データが蓄積していくため,いつ・だれが・どのような開発をしたのかを分析することが可能です.また,GitHubで公開されているリポジトリは,1億2800万を超えており,すべて分析が可能です. ソフトウェアアナリティクスと呼ばれる分野では,これらの蓄積された膨大な公開データや提携企業のデータを分析し,ソフトウェア開発の個人やチームがより良い意思決定できるようにする事を目指してといます.当研究室でも,開発リポジトリから,機能実装やリファクタリング,テストなどのデータを取得し,開発者がどのような問題に会しているか,その問題はどう解決すべきかを,分析を通して追求しています.