本論文では,プログラム中に登場する変数の名前について,その適切さを自動評価するための手法を提案し,その有用性について議論している.提案手法では,変数ごとにプログラムスライスを抽出し,それを文書と見立ててDoc2Vecを用いることで,変数の使われ方を特徴ベクトルとして表現している.そして,Javaで書かれた6個のオープンソースソフトウェアを対象として評価実験を行い,不適切な名前を持った変数を自動的に抽出できることを示している.
近年,様々な自動バグ修正手法の開発が行われている.本研究ではその中でも深層学習を用いて構文エラーの修正ができるDeepFixに着目する.DeepFixの提案論文ではオンラインプログラミング講座のPrutorで収集されたプログラムをもとにDeepFixの性能の評価を行っていた.本研究では九州大学のプログラミング科目で収集されたデータセットを用いて,教育支援の観点からいくつかの調査を行った.調査の結果,(1)先行研究の学習データで作成されたモデルは他の教育現場で作成されたプログラムに対しても20%程度と一定の性能を持つこと,(2)先行研究の学習データに新たに別の教育現場から得られた学習データを追加することでDeepFixの修正性能が向上すること,(3)学習データ数は一定の数までは性能に大きな影響があるが,一定数を超えると性能が収束することが示せた.
近年,ソースコードのデバッグ作業を効率化する自動プログラム修正が注目されている.従来の自動プログラム修正手法では,欠陥が含まれる命令を,ソースコード中の別の箇所に出現する式 (素材コード片) を用いて書き換えることで,欠陥を修正する.したがって,必要な素材コード片がソースコード中に存在しない場合,欠陥を修正できない.本研究では,修正対象システムで特定のコード記述パターンがよく用いられる,という開発者の知見を活用し,事前定義したコード記述パターンに基づき素材コード片を生成する手法を提案する.これにより,ソースコード中に素材コード片が存在しない場合でも,プログラムの自動修正が可能となる.実製品の開発中に検出・修正された欠陥48件に提案手法を適用した結果,既存手法では修正できた欠陥の数が9件だったところ,提案手法では2件増加し11件となった.
複雑なクラス図への誤読を防ぐためにそのレイアウトの可読性を高めることは重要であり,その方法の一つとして,多数の美的基準が存在する.しかし,可読性を効果的に高めるために,組み合わせるべき美的基準や,その選択の優先順位について,調査研究は十分になされていない.本稿では,美的基準の組み合わせ方やその選択の優先順位の調査を目的とし,ロボコンで高評価を得た14枚のクラス図に対し,適用されているであろう美的基準を12名の情報工学系の学生が判断・評価する参加者実験を行った.その結果,可読性の高いクラス図には22個の美的基準の内,特定の7つが用いられていることや,可読性の高さが上位6位のクラス図において,付加的に満たすと可読性が高まると考えられる3つの美的基準が用いられていることがわかった.
本論文では,情報流解析における機密度がパラメータ化されたクラスの柔軟性向上のために機密度ワイルドカードを提案する.従来提案されている機密度がパラメータ化されたクラスは,Javaのジェネリクスと同様に不変(invariant)であり,かつJavaと異なり機密度のためのワイルドカードが存在しないため,柔軟なAPIを実装することが難しい.本論文では,対象をメソッドの仮引数に出現する境界付きの機密度ワイルドカードに制限して形式化し,Javaプログラム中に機密度ワイルドカードを記述するためのアノテーションを定義する.
近年,機械学習の前処理やモデル選択,ハイパーパラメータの調整を自動化できるautomated machine learning(AutoML)が普及しつつあり,モデル構築の容易さと予測精度の両立を期待されている.本研究では,ソフトウェア開発工数予測へAutoMLを適用し,その効果について実験的に評価する.実験では,AutoMLライブラリのauto-sklearnと,対照モデルとして線形重回帰,Elastic Net,ランダムフォレストを採用した.Win-tie-loss法により各モデルの予測精度を比較した結果,auto-sklearnは,対照モデルと同等または優れた予測性能を示すことが確認された.また,auto-sklearnの探索時間ごとの予測結果を分析した結果についてもまとめた.
Containerization, in which multiple virtual servers (i.e., containers) are built on a single physical server, is widely employed for cost reduction and effective resource utilization. The object of this study is Docker, the de facto standard containerization platform. Containers in Docker are built by writing configuration scripts and creating files called Dockerfile. Managing the infrastructure as code makes it possible to apply knowledge gained from conventional software development to infrastructure configuration. However, infrastructure as code is a relatively new technology, some domains of which have not been fully researched. In this study, we focus on code completion and aim to construct a system that supports the development of dfs. The proposed system applies machine learning with long short-term memory to a pre-collected dataset to create language models and uses model switching to overcome a Docker-specific code completion problem. Evaluation experiments show that the implemented code completion system, hb, has a high average recommendation accuracy of 88.9%.
コードクローンとは,ソースコード中に存在する互いに一致または類似した部分を持つコード片のことである.横井らが提案したコードクローン検出ツールCCVoltiは,情報検索技術であるTF-IDFと近似最近傍探索アルゴリズムCross-Polytope LSHを利用して,従来の手法では困難であった意味的に類似するコードクローンを高速に検出可能とした.しかし,CCVoltiは検出時間がCross-Polytope LSHに大きく依存し,Cross-Polytope LSHによるコードクローンの検出漏れが発生するという問題点がある.本研究では,クローン検出の利用者が与えた再現率の目標値を満たしつつ,できるだけ時間を短縮することを目的として,プロジェクトの規模から適切なパラメータ値を求める線形回帰モデルを構築し,コードクローン検出対象に適したCross-Polytope LSHに与えるパラメータ値の組を決定する手法を提案する.さらに,20個のプロジェクトに対して本手法で決定されたパラメータ値をCCVoltiに適用し,コードクローン検出する評価実験を実施して本手法の有効性を示す.