Agent Skills by ALSEL
汎用教育・学習⭐ リポ 216品質スコア 83/100

software-engineering-research

ソフトウェアエンジニアリングの研究トピックと方法論のガイド

description の原文を見る

Guide to software engineering research topics and methodologies

SKILL.md 本文

ソフトウェアエンジニアリング研究ガイド

主要な専門分野、方法論、データセット、ベンチマーク、トップベニューを含むソフトウェアエンジニアリング研究の展望をナビゲートします。

SE研究の専門分野

専門分野主要なトピック主要なベニュー
ソフトウェアテストテスト生成、ファジング、ミューテーション・テスト、不安定なテストISSTA, ICST, ASE
プログラム解析静的解析、抽象解釈、シンボリック実行PLDI, POPL, OOPSLA
ソフトウェア保守コード・リファクタリング、技術的負債、コード・スメル、進化ICSME, MSR, SANER
AI/ML向けSEMLパイプライン・テスト、データ品質、モデル・デバッグICSE-SEIP, FSE
SE向けAIコード生成、バグ検出、プログラム修復ICSE, FSE, ASE
分散システムコンセンサス、フォールトトレランス、スケーラビリティ、マイクロサービスSOSP, OSDI, EuroSys
サイバーセキュリティ脆弱性検出、マルウェア分析、プライバシーIEEE S&P, CCS, USENIX Security
SE向けHCIデベロッパーツール、IDE利便性、コード理解CHI, CSCW, VL/HCC
経験的SEリポジトリマイニング、デベロッパー調査、統制実験ESEM, MSR, TOSEM

SE における研究方法論

統制実験

治療群と対照群を用いた特定の仮説のテスト:

例: AIコード補完はデベロッパーの生産性を向上させるか?

設計:
- 参加者: 60名のプロフェッショナル・デベロッパー
- 治療群: AIコード補完有効なIDE
- 対照群: AIコード補完無効なIDE
- タスク: 難易度が異なる5つのプログラミング・タスク完了
- メトリクス: タスク完了時間、コード正確性、コード行数
- 分析: 参加者をランダム効果とした混合効果線形モデル

妥当性への脅威:
- 内的妥当性: 学習効果(タスク順序を相互釣り合い化)
- 外的妥当性: ラボ環境は実際の開発を反映していない可能性
- 構成的妥当性: 「生産性」は速度+正確性として操作化

ソフトウェアリポジトリマイニング (MSR)

バージョン管理、課題追跡、コードレビュー・システムのデータを分析:

# 例: PyDrillerを使用してコミット・パターンを分析
from pydriller import Repository

repo_url = "https://github.com/apache/kafka"

commit_data = []
for commit in Repository(repo_url, since=datetime(2023, 1, 1),
                          to=datetime(2023, 12, 31)).traverse_commits():
    commit_data.append({
        "hash": commit.hash[:8],
        "author": commit.author.name,
        "date": commit.committer_date,
        "files_changed": commit.files,
        "insertions": commit.insertions,
        "deletions": commit.deletions,
        "message": commit.msg[:100]
    })

df = pd.DataFrame(commit_data)
print(f"Total commits in 2023: {len(df)}")
print(f"Unique contributors: {df['author'].nunique()}")
print(f"Avg files per commit: {df['files_changed'].mean():.1f}")

ケーススタディ

現実のコンテキストにおける現象の詳細な調査:

ケーススタディ・プロトコル (Yin, 2018に基づく):
1. 研究質問: チームはどのようにマイクロサービスを採用するか?
2. 分析単位: 3社の開発チーム
3. データ源:
   - 半構造化インタビュー(各社8〜12件)
   - アーキテクチャドキュメント・レビュー
   - コミット履歴とデプロイメント・ログ
   - ミーティング観察
4. 分析: ケース間比較を伴うテーマティック分析
5. 妥当性: データ源間の三角測量、メンバーチェッキング

主要なデータセットとベンチマーク

コード理解と生成

ベンチマークタスク言語サイズ
HumanEvalドキュメント文字列からのコード生成Python164問題
MBPP説明からのコード生成Python974問題
SWE-bench実世界のGitHub課題解決Python2,294インスタンス
CodeXGLUE複数のコードタスク6言語タスク別に異なる
BigCloneBenchクローン検出Java600万クローンペア
Defects4Jバグ位置特定と修復Java835実バグ

ソフトウェアエンジニアリング・プロセス

データセットコンテンツユースケース
GHTorrentGitHubイベント・データ(コミット、課題、PR)MSR研究
Software Heritageユニバーサル・ソースコード・アーカイブコード進化、出所追跡
Stack Overflow Data DumpQ&Aポスト、タグ、投票デベロッパー知識、NLP
CVE Database脆弱性レコードセキュリティ研究
Chrome/Firefox Bug Trackersバグ報告、パッチバグトリアージ、重大度予測

研究向け静的解析ツール

# 例: tree-sitterを使用したAST レベルのコード分析
from tree_sitter import Language, Parser
import tree_sitter_python as tspython

PYTHON_LANGUAGE = Language(tspython.language())
parser = Parser(PYTHON_LANGUAGE)

source_code = b"""
def fibonacci(n):
    if n <= 1:
        return n
    return fibonacci(n-1) + fibonacci(n-2)
"""

tree = parser.parse(source_code)
root = tree.root_node

def count_nodes(node, node_type):
    """指定された型のASTノードをカウント."""
    count = 1 if node.type == node_type else 0
    for child in node.children:
        count += count_nodes(child, node_type)
    return count

print(f"Function definitions: {count_nodes(root, 'function_definition')}")
print(f"If statements: {count_nodes(root, 'if_statement')}")
print(f"Return statements: {count_nodes(root, 'return_statement')}")
print(f"Function calls: {count_nodes(root, 'call')}")

コード・メトリクス

# 一般的なソフトウェア・メトリクス
metrics = {
    "Lines of Code (LOC)": "Total lines (including blanks and comments)",
    "Cyclomatic Complexity": "Number of independent paths (McCabe, 1976)",
    "Halstead Volume": "Based on operators and operands count",
    "Maintainability Index": "Composite of LOC, CC, and Halstead",
    "Coupling Between Objects": "Number of other classes referenced",
    "Depth of Inheritance": "Levels in class hierarchy",
    "Code Churn": "Lines added + modified + deleted per period",
    "Comment Density": "Ratio of comment lines to total lines"
}

# radonを使用して循環的複雑度を計算
# pip install radon
import subprocess
result = subprocess.run(
    ["radon", "cc", "my_module.py", "-s", "-j"],
    capture_output=True, text=True
)
print(result.stdout)

トップベニューとインパクト

Tier-1 SEベニュー

ベニュータイプ採択率フォーカス
ICSEカンファレンス約22%広範なSE
FSE/ESECカンファレンス約24%広範なSE
ASEカンファレンス約22%自動化SE
ISSTAカンファレンス約25%ソフトウェアテスト
MSRカンファレンス約30%リポジトリマイニング
TOSEMジャーナル--広範なSE (ACM)
TSEジャーナル--広範なSE (IEEE)
EMSEジャーナル--経験的SE (Springer)

システムとセキュリティベニュー

ベニュータイプフォーカス
SOSP/OSDIカンファレンスオペレーティング・システム、分散システム
EuroSysカンファレンスシステム(ヨーロッパ)
NSDIカンファレンスネットワーク・システム設計
IEEE S&P (Oakland)カンファレンスセキュリティとプライバシー
USENIX Securityカンファレンスセキュリティ
CCSカンファレンスコンピュータ・通信セキュリティ
NDSSカンファレンスネットワーク・分散システムセキュリティ

研究ツール・エコシステム

ツール目的URL
PyDrillerGitリポジトリマイニング (Python)github.com/ishepard/pydriller
RadonPythonコード・メトリクスgithub.com/rubik/radon
SonarQube多言語静的解析sonarqube.org
Understandコード分析とメトリクスscitools.com
Joernコード分析プラットフォーム (CPG)joern.io
CodeQLセマンティック・コード分析codeql.github.com
tree-sitterインクリメンタル・パージング・ライブラリtree-sitter.github.io

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
wentorai
リポジトリ
wentorai/research-plugins
ライセンス
MIT
最終更新
2026/4/19

Source: https://github.com/wentorai/research-plugins / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: wentorai · wentorai/research-plugins · ライセンス: MIT