ICSE 2291 ASE 2141 FSE 1566 ASPLOS 1219 LMCS 1020 OOPSLA 737 LICS 679 ISSTA 617 POPL 609 ICFP 374 PLDI 369 TOPLAS 199 JFP 172 arXiv 预印本 5
ICSE(CCF A)(共 2291 篇)
2026619 篇 · Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering
Cobblestone:一种自动化形式验证的分治方法
Cobblestone 用 LLM 分治合成 Coq 证明:拆分已验证子目标并迭代,保持可靠性,自动化形式验证。
TaintP2X:检测 LLM 集成应用中的污点式 Prompt-to-Anything 注入漏洞
提出静态污点分析框架 TaintP2X,将 LLM 输出视为污点源,检测 LLM 集成应用中的 P2Xi 注入漏洞。
DepRadar:面向深度学习库上下文感知缺陷影响分析的智能体协同框架
DepRadar 用多个专门化智能体协同静态分析与领域规则,自动判定深度学习库缺陷是否影响下游程序。
LLM 增强的程序分析:迈向实用且可扩展的缺陷检测
提出用 LLM 增强静态分析,通过神经-符号混合框架提升缺陷检测的精度与可扩展性。
HoarePrompt:面向自然语言中程序正确性的结构化推理
提出 HoarePrompt,将最强后置条件与 k-归纳引入 LLM,用自然语言推理程序对需求的正确性。
PredicateFix:用桥接谓词修复静态分析告警
利用分析规则中的谓词检索关键样例,构建 RAG 流水线自动修复静态分析告警,显著提升 LLM 修复正确率。
AgenticTyper:使用智能体 AI 对遗留软件项目进行自动类型标注
提出基于 LLM 智能体的自动化类型标注系统,通过迭代纠错与转译对比保持行为,20 分钟解决 633 个类型错误。
大语言模型辅助的部分程序依赖分析
提出利用大语言模型辅助部分程序依赖分析,缓解不完整代码片段上精度与召回率的权衡。
数据感知的静态分析:利用数据特征改进机器学习代码中的语义错误检测
提出数据感知的静态分析,结合数据流、控制流与 API 契约,在编码阶段检测机器学习代码的语义错误。
SpecGuru:层次化LLM驱动的API指向规约生成与自验证
提出层次化LLM驱动并自验证的API指向规约生成方法,缓解第三方API复杂语义、语法与边界情况带来的静态分析困难。
基于智能体所有权分析与修复模式验证的项目级资源泄漏检测
提出首个集成 LLM 智能体的项目级资源泄漏检测框架 AROP,通过元数据筛选、智能体识别与数据流验证降低误报。
通过 SMT 求解检查无监督学习中的非确定性与不一致性
提出 Ocelot,将无监督学习实现中的非确定性与不一致性检查归约为 Z3 可满足性求解,并生成见证数据集以复现错误。
HarnessLLM:用大语言模型生成 Rust 验证 harness
提出 HarnessLLM,从既有测试套件自动抽取调用场景并用 LLM 增量生成、迭代修复 Rust 验证 harness,检出 6 个真实内存安全缺陷。
PAGENT:学习修补软件工程问题修复智能体
系统研究 LLM 问题修复智能体的失败模式,并提出类型感知的后处理代理 PAGENT 修复错误补丁。
Locus:面向定向模糊测试的 Agentic 谓词合成
提出 Locus,用智能体合成中间状态谓词引导定向模糊测试,平均加速 41.6 倍并发现 9 个新漏洞。
自动化需求形式化:使用 LLM 与低复杂度区分迹进行语义验证
提出 ARTEMIS,用 LLM 将自然语言需求经结构化中间表示译为时序逻辑,并用低复杂度区分迹把人工验证开销对数级削减。
编写你自己的代码检查器:一种基于 LLM 的自动化测试驱动检查器开发方法
提出 AutoChecker,仅凭规则描述与测试套件,用 LLM 迭代生成代码检查器,平均测试通过率达 82.28%。
调用图剪枝真的有效吗?
通过构建新数据集与多框架评估,发现调用图剪枝在提升精度的同时造成显著覆盖率损失,并揭示原有评估方法的缺陷。
通过神经符号约束学习测试深度学习库
提出神经符号约束学习技术 Centaur,从种子输入学习 DL API 约束,用 SMT 生成有效多样测试并发现新缺陷。
AI 智能体中徒劳循环(futile cycle)检测的无监督方法
提出智能体执行轨迹中“徒劳循环”的概念,并用结构加语义的无监督混合方法检测,F1 达 0.72。
SWE-Debate:面向软件问题解决的竞争性多智能体辩论
提出竞争性多智能体辩论框架 SWE-Debate,通过故障传播轨迹与三轮辩论实现更统一的缺陷定位与补丁生成。
迈向 LLM Agent 可验证安全的工具使用
结合 STPA 危害分析与能力增强 MCP,为 LLM Agent 的工具调用提供形式化安全护栏。
FreshBrew:评估 AI Agent 进行 Java 代码迁移的基准
提出 FreshBrew 基准,系统评估 AI agent 在项目级 Java 迁移中保持语义、避免 reward hacking 的能力。
TestWeaver:执行感知、反馈驱动的大语言模型回归测试生成
结合轻量程序分析与 LLM,通过后向切片、相似测试用例和执行内联标注生成回归测试,缓解覆盖率停滞。
ProofCoop:协作式自动形式化验证
提出 ProofCoop,让多个证明合成模型在搜索中协作,显著提升 Coq 定理自动证明成功率。
Argus:基于分层引用关系的多智能体敏感信息泄露检测框架
提出多智能体框架 Argus,通过分层引用关系检测代码仓库敏感信息泄露并降低误报。
Prophecy:从神经元激活推断形式化性质
提出工具 Prophecy,通过神经元激活状态自动推断神经网络的形式化性质,支持解释、验证与监控。
一个签名,多次支付:智能合约中签名重放漏洞的揭示与检测
首次实证研究智能合约签名重放漏洞,并提出 LLM 辅助静态污点分析结合符号执行的检测工具 LASiR。
MINES:通过 Web API 不变式推断实现可解释异常检测
从 API schema 推断可解释不变式,用正常日志筛选后生成 Python 代码检测 Web 异常,显著优于日志学习基线。
SAINT:结合程序分析与LLM智能体的服务级集成测试生成
提出SAINT,用静态分析构建端点模型与操作依赖图,并借助LLM智能体自动生成企业Java服务级测试。
INTENTFIX:通过 LLM 驱动的意图建模实现逻辑漏洞自动修复
提出 INTENTFIX,用 LLM 将开发者意图形式化为模型,差分定位语义缺口并自动合成补丁修复逻辑漏洞。
面向神经符号故障定位的溯因推理
提出 HypoDeduce,用溯因推理生成并评估竞争假设,缓解 LLM 故障定位早期剪枝备选假设的问题。
Code Wars:面向软件验证工具演化的对抗性自博弈
提出三个LLM智能体攻防审对抗自博弈,提升软件验证与技术债检测准确率。
让审判开始:一种基于LLM智能体的模拟法庭漏洞检测方法
提出模拟法庭式多智能体框架VulTrial,用角色分工与指令微调显著提升LLM漏洞检测与解释能力,并发现多个零日漏洞。
LLM代码智能体推理故障定位框架
提出APPS-Failure-DB数据集与工具辅助定位框架,将LLM代码智能体的推理失败日志关联到代码故障。
自动化即时 Python 类型标注更新
提出基于 LLM 的 TypeUp,利用代码变更与旧标注即时更新 Python 类型标注,并显著优于 TypeGen。
Hugging Face Spaces 中密钥泄露的大规模实证研究
首个大规模实证研究,结合静态分析与 LLM 检测,量化 Hugging Face Spaces 的密钥泄露规模与风险。
可操作警告还不够:基于弱监督推荐有效的可操作警告
提出两阶段弱监督框架 ACWRecommender,从静态分析告警中推荐高概率为真实缺陷的可操作警告。
SWE-bench 中的“Solved Issues”真的被正确解决了吗?一项实证研究
通过差分补丁测试揭示 SWE-bench 验证机制会高估自动问题解决工具的解决率,并导致错误补丁被判正确。
基于 LLM 的自动缺陷修复智能体:我们离目标还有多远?
在 SWE-bench Verified 上系统评测六个 LLM 缺陷修复智能体,剖析其能力边界与性能差异来源。
基于迭代混合程序分析的 LLM 测试生成
Panta 通过静态控制流与动态覆盖率的迭代反馈引导 LLM 生成测试,显著提升覆盖率。
重新思考安全代码生成的评估
系统研究发现现有安全代码生成技术常以牺牲功能正确性换取安全性,且单一静态分析器 CodeQL 的评估存在盲区。
超越最终代码:真实 GitHub 场景中软件开发智能体的过程导向错误分析
对 SWE-Bench 上 8 个智能体的求解轨迹与测试日志做过程导向错误分析,揭示执行错误与修复成功率的关系。
评估与改进基于 LLM 智能体的仓库级 Rust 问题修复
提出 Rust-SWE-bench 基准与 RustForger 智能体,通过自动测试环境和动态追踪提升 Rust 仓库级问题修复。
RepoScope:利用调用链感知的多视图上下文进行仓库级代码生成
提出 RepoScope,用调用链感知的多视图上下文与结构保持序列化提升仓库级代码生成。
TraceCoder:面向 LLM 生成代码自动调试的轨迹驱动多智能体框架
用运行时轨迹与多智能体协作定位根因,并借助历史经验学习与回滚机制高效修复 LLM 生成的代码。
Testora:利用自然语言意图检测行为回归
提出 Testora,首个对比代码变更意图与行为差异来检测回归的自动化方法。
MioHint:面向白盒 REST API 测试的 LLM 辅助请求变异
提出 MioHint,用静态数据依赖检索与 LLM 协同引导白盒 REST API 请求变异,突破覆盖瓶颈。
环境感知的代码生成:我们离目标还有多远?
首次系统研究环境感知代码生成,发布多包可执行基准 VersiBCB,并提出数据、参数、缓存三类适配策略。
MutDafny:一种基于变异的 Dafny 规约评估方法
提出 MutDafny 工具,用 40 个变异算子通过变异测试自动暴露 Dafny 形式规约的弱点。
RBCTest:利用LLM为RESTful API测试挖掘并验证API响应体判定(oracle)
提出LLM驱动的静态方法,从API规范中挖掘响应体约束作为oracle并生成RESTful API测试用例,以观察-确认提示抑制幻觉。
FlipFlop:基于静态分析的 GPU 内核能耗优化框架
提出 FlipFlop,用 PTX 静态分析预测 GPU 内核能耗并推荐帕累托最优线程块配置。
AdapTrack:不扭曲 LLM 输出意图的约束解码
提出带回溯的约束解码方法 AdapTrack,在满足语法/API 约束的同时保持模型输出意图,显著提升代码生成正确率。
AdaRule:基于模式自适应规则归纳的 LLM 驱动自然语言到 LTL 转换
提出 AdaRule,用 LLM 反馈迭代归纳模式自适应翻译规则,免手工规则实现 NL→LTL 转换,平均提升至少 21.1%。
Comfrey:在运行时缓解 LLM 使能软件中的集成失效
提出 Comfrey,在运行时缓解 LLM 使能软件中由 LLM/RAG 输出与组件要求冲突引发的集成失效。
LSPRAG:LSP 引导的 RAG 用于语言无关的实时单元测试生成
提出 LSPRAG,利用 LSP 实时检索精确上下文,实现语言无关的单元测试生成并提升覆盖率。
当 AI 掌舵:框架约束程序生成的安全性分析
构建 ChromeSecBench,实证揭示 LLM 生成框架约束程序存在高漏洞率,且推理模型更不安全。
从种子到范围:识别变更影响集的推理方法
提出 Ripple,用 LLM 做意图感知的变更影响分析,以两阶段设计平衡精度与召回,F1 提升 39.7%–380.8%。
ConfLogger:通过配置日志增强系统的配置可诊断性
提出配置日志思想,用配置感知静态污点分析与LLM生成诊断日志,显著提升系统配置问题的可诊断性。
TAAF:一个协同知识图谱与大语言模型的轨迹抽象与分析框架
提出TAAF,用时间索引知识图谱与大语言模型把海量执行轨迹转为可自然语言查询的洞察,并发布TraceQA-100基准。
在线与交互式贝叶斯推断调试
提出在开发环境中在线交互式调试贝叶斯推断的方法与工具,显著降低调试时间与难度。
XRFix:利用大语言模型修复扩展现实应用的性能缺陷
提出 XRFix,结合定制静态分析与分层 LLM 提示,自动修复 XR 应用性能缺陷,修复率达 67.3%。
不完美 LLM 解引导的距离导向搜索程序合成
提出距离引导搜索,用不完美的 LLM 生成程序启发自顶向下与自底向上合成,提升程序合成的可扩展性。
面向数字医疗服务的结构化临床规约的智能体式生成
提出 MARACTUS,用 LLM 智能体把非结构化临床文档转换为机器可读行动树,支撑模型驱动工程与形式验证。
CKG-LLM:基于知识图谱的 LLM 辅助智能合约访问控制漏洞检测
用大语言模型把自然语言漏洞模式翻译为合约知识图谱查询,自动检测智能合约访问控制漏洞。
MAJIT:通过基于大语言模型的多智能体协作即时检测 Android 与 iOS 应用中的兼容性问题
提出基于 LLM 多智能体协作的即时兼容性缺陷检测方法 MAJIT,在代码变更上检测系统版本、设备与屏幕尺寸问题,精确率与召回率均超 96%。
大语言模型驱动的测试驱动程序生成:面向高性能计算库
提出用大语言模型为 HPC 库自动生成测试驱动,以突破差分测试中人工用例覆盖不足与现有自动化技术失效的困境。
ArtifactSync:通过层次化变更影响分析实现仓库自动同步
ArtifactSync 用 LLM 做层次化变更影响分析,自动识别并修复代码变更后过时的文档与测试等工件。
WiseUT:面向单元测试生成的智能框架
将大语言模型与程序分析结合的端到端单元测试生成框架,提升覆盖率、缺陷检测精度与可维护性。
面向 AI 编译器模糊测试的数据驱动测试生成
提出统一数据驱动测试框架,面向 AI 编译器各阶段生成测试,发现 266 个未知缺陷。
面向法律关键软件的 LLM 智能体方法:以报税软件为例
提出基于角色分工的多智能体框架,用高阶蜕变关系自动生成测试并合成代码,从税法法条构建可靠报税软件。
LLM4JMH:研究利用大语言模型生成Java性能微基准
提出 LLM4JMH,用 LLM 从源码生成 Java 性能微基准,并以静态分析增强,实现早期性能回归检测。
在真实世界上下文中评估 LLM 的代码推理
提出 R2Eval 基准,用真实 Python 项目中的复合与自定义类型问题评估 LLM 代码推理。
AgentSpec:面向安全可靠 LLM 智能体的可定制运行时约束执行
提出轻量级 DSL AgentSpec,在运行时对 LLM 智能体施加可定制的安全约束,并支持用 LLM 自动生成规则。
面向更好的 Linux 内核故障定位:利用对比推理与层次化上下文分析
提出 CoHiKer,用对比推理与层次化上下文分析显著提升 Linux 内核故障定位的文件级与方法级精度并降低 token 开销。
NB2P:从计算笔记本生成数据科学流水线
提出 NB2P,自动从计算笔记本中提取可部署的数据科学流水线,性能优于 LLM 基线且开销低。
在宽松定位条件下探索自动程序修复中的信息迷失问题
提出自动程序修复中的“信息迷失”问题,并用逻辑分解、细粒度上下文检索与块到整体推理加以缓解。
面向智能体评估的分层蜕变测试预言
提出 MESA 框架,用目标、策略、动作三层蜕变测试预言评估智能体,并按层级分解失败。
TypeCare:通过上下文感知的重排序与数据增强提升 Python 类型推断模型
提出上下文感知重排序与数据增强方法 TypeCare,提升 Python 类型推断模型对稀有与复杂类型的推断能力。
从代码到正确性:用层次化调试打通代码生成的最后一公里
提出层次化调试器 MGDebugger,通过子函数分解与自底向上排错,显著提升 LLM 生成代码的修复成功率。
Issue2Test:从 issue 报告生成复现测试用例
提出基于 LLM 的 Issue2Test,从 issue 报告自动生成按问题原因失败的可复现测试用例。
统一的软件工程智能体作为 AI 软件工程师
提出统一软件工程智能体 USEagent 与 USEbench 基准,使 LLM 智能体跨编码、测试与修复等多任务协同。
修复素材就是全部所需:通过修复素材检索改进基于大语言模型的程序修复
提出 ReinFix,让 LLM 在推理与求解阶段自主检索内部与外部修复素材,显著提升程序修复效果。
SmartC2Rust:面向安全性与等价性的、基于大语言模型的迭代反馈驱动 C 到 Rust 翻译
提出迭代反馈驱动的 LLM 自动 C→Rust 翻译系统,通过多类反馈逐步提升生成代码的内存安全与语义等价。
RulePilot:面向安全规则生成的 LLM 驱动智能体
提出 LLM 智能体 RulePilot,借助中间表示从自然语言标注自动生成安全检测规则。
FORGE:一个 LLM 驱动的大规模智能合约漏洞数据集构建框架
提出首个 LLM 驱动的智能合约漏洞数据集自动构建框架,从真实审计报告抽取漏洞并按 CWE 分类,构建大规模数据集。
分布外即失手:基于漏洞数据集训练的 LLM 能多好地检测 Top 25 CWE 弱点?
提出 BenchVul、TitanVul 与 RVG,揭示漏洞检测模型的分布外泛化差距并提升 Top 25 CWE 检测。
以少胜多:高效编码智能体轮次控制策略的实证研究
首次系统实证三种轮次控制策略,提出按需延长的动态轮次策略,在保持解决率的同时大幅降低成本。
从代码度量视角审视基于LLM的漏洞发现
仅用代码度量训练的分类器在漏洞发现上可与先进LLM媲美,并揭示LLM预测与代码度量存在因果依赖。
超越正确性:通过多步自动定理证明揭示 LLM 生成推理中的逻辑缺陷
提出 MATP 框架,将 LLM 自然语言推理转为 FOL 并用自动定理证明逐步检测逻辑错误。
通过跨语言翻译与多智能体精化解锁 LLM 修复能力
提出 LANTERN,通过跨语言翻译与多智能体迭代修复,将缺陷迁移至 LLM 更擅长的语言,显著提升多语言程序修复效果。
PyXray:通过对象布局分析进行实用的跨语言调用图构建
提出 PyXray,通过对象布局分析构建 Python 与 C/C++/Rust 二进制扩展间的跨语言调用图。
单元证明有效吗?面向内存安全验证的组合有界模型检验的实证研究
首个内存安全验证中单元证明的实证研究,提出系统化构建方法并评估其效果与成本。
顺序很重要!大型语言模型在软件故障定位中的输入顺序偏置实证研究
实证揭示LLM在故障定位中对输入方法顺序存在显著偏置,拆分小上下文可近乎消除差距。
重新思考微调语言模型在自动漏洞修复中的能力
通过语义保持变换、重新划分数据与提出基于测试的基准,揭示微调AVR模型的过拟合与评测缺陷。
Diffploit:促进开源库漏洞的跨版本 exploit 迁移
提出基于版本差异与 LLM 迭代反馈的 exploit 迁移方法,自动适配库漏洞利用程序到其它版本。
重新审视“重新审视 DNN 测试的神经元覆盖:一种分层且分布感知的准则”:一篇批判性综述及对 DNN 覆盖测试的启示
批判性复审 NLC 覆盖准则,指出其违背单调性与测试套件顺序无关性,并揭示实证效度问题。
E-Test:不断改进的测试套件
利用 LLM 从大规模生产执行场景中识别未被测试覆盖的场景,并生成新测试用例以增强测试套件
对话式AI系统的多层次测试
提出面向对话式AI系统的多层次测试方法,覆盖语言与AI组件集成、单个对话代理及多代理实现。
基于智能体的集成推理用于仓库级 Issue 解决
提出首个基于智能体的集成推理方法 EnAgent,通过生成、剪枝、选择模块提升仓库级 issue 解决效果。
利用LLM语义增强的架构恢复结果自动精化
提出SemRef,结合LLM语义理解与依赖分析,自动精化已有架构恢复工具的输出,提升准确性与可理解性。
研究并自动化面向软件质量的 issue 解决
通过LLM增强issue报告、刻画开发者工作流并自动化UI缺陷定位与方案识别,推进AI驱动的issue解决。
刻画回归缺陷诱导变更并改进基于 LLM 的回归缺陷检测
系统分析 280 个 Java 回归缺陷的诱导变更,并评估与改进 LLM 在提交级回归缺陷检测中的表现。
Python 静态应用安全测试(SAST)工具的实证研究
通过实证评估揭示 Python SAST 工具在检测真实漏洞方面与实际 CWE 覆盖声明之间的差距。
SCLA:基于 LLM 与控制流提示的自动化智能合约摘要
提出 SCLA,用函数调用图与控制流语义事实增强提示,使通用 LLM 在智能合约摘要上显著超越微调基线。
TaskEval:面向基础模型任务的合成评估
提出任务无关元模型与评估合成器,自动生成基础模型任务评估器并收集人类反馈。
USCSA:面向基于代理的可升级智能合约的演化感知安全分析
USCSA 结合 AST 差异分析与大语言模型推理,检测代理式可升级合约在升级过程中引入的漏洞。
自动程序修复中过拟合的不可判定性
论证过拟合并非测试套件不足导致的可修复缺陷,而是规约缺失下不可判定性的结构性后果。
基于提示改写的LLM生成代码自动验证
提出提示复述测试,通过改写提示生成多版代码并交叉验证语义一致性,以检测LLM生成代码缺陷。
TraceCaps:面向智能体软件工程的内联溯源与风险强制执行
TraceCaps 将密码学溯源胶囊与单调累积风险分结合,在智能体每一步内联地允许、警告或阻断工具调用。
终止条件的精确推断
提出首个能精确刻画终止状态的终止条件推断方法,并证明其正确、精确、可终止且相对完备。
CI-Bench:评估大语言模型工具在 CI 失败上的基准框架
提出 CI-Bench 统一基准框架,用真实 CI/CD 构建失败数据动态评测 LLM 程序修复工具。
知识至关重要:将项目知识与测试知识注入基于 LLM 的单元测试生成
提出 KTester,融合项目结构与测试领域知识,显著提升 LLM 单元测试的正确性与可维护性。
LoopSCC:通过周期振荡区间摘要复杂多分支嵌套循环
提出 SPath 图与振荡区间方法,精确摘要含不规则跳转的复杂多分支嵌套循环,并检测出多个 IoT 漏洞。
Agentic 软件工程:迈向软件工程 3.0 的路线图
结合大规模实证与 SASE 框架,描绘从 AI 辅助开发到自主智能体协作的软件工程 3.0 路线图。
通过工具交互式训练增强问题定位智能体
提出两阶段工具交互训练框架 ToolTrain,用拒绝采样监督微调与强化学习提升 LLM 使用检索工具进行问题定位的能力。
C 编译器中优化引入缺陷的检测
研究 C 编译器优化引入缺陷的检测,计划通过大规模缺陷分析与优化导向 fuzzing 提升测试可靠性。
面向符号执行的生成器求解
提出「生成器求解」:不求解单个解,而是求解可反复调用、持续产出新测试输入的生成器,以提升符号执行效率。
基于信息流的时序软件系统量化分析
提出把时序信道分析嵌入软件开发各阶段的信息流定量方法,并提供可组合的度量与工具支持。
探索大语言模型用于 Android 应用合规违规检测
首次评估 LLM 在 Android 应用中检测隐私合规违规,发现模型专长随检测粒度与法规而变化。
通过语义数据差异实现执行感知的代码文档
提出语义数据差异这一符号表示,结合静态分析与执行后语义,生成能说明代码对数据做了什么感知运行的文档。
迈向面向静态方法可靠 Mock 与持续集成的多智能体系统
提出用生成-测试-修复智能体循环与多智能体协作,自动化静态方法重构、Mock 与单元测试生成,并集成到 CI 工作流。
PySTAAR:一个端到端、可扩展的 Python 类型错误自动修复框架
提出端到端可扩展框架 PySTAAR,集成测试生成、故障定位、补丁合成与验证,借助大模型自动修复 Python 类型错误。
JUnitGenie:基于大语言模型的路径敏感单元测试生成框架
从 Java 项目提取代码知识并蒸馏为结构化提示,引导 LLM 生成路径敏感的高覆盖率单元测试。
使用LLM对教科书级高效代码进行技术优化
研究LLM对教科书级高效代码的技术优化,发现功能保持输出中34%有非平凡加速,但也伴随失败与回退。
检索增强的测试生成:我们距离目标还有多远?
系统评估 RAG 在 ML/DL API 单元测试生成中的效果:RAG 不改善正确性,但平均提升行覆盖率 6.5%,并发现 28 个新 bug。
当提示出错:评估代码模型对歧义、矛盾和不完整任务描述的鲁棒性
首次实证研究LLM代码生成对歧义、矛盾与不完整任务描述的鲁棒性,揭示微小表述缺陷即可显著降低功能正确性。
反思商业 LLM 性能在实证软件工程研究中的可复现性
系统复现 ICSE/ASE 2024 中 18 项商业 LLM 实证研究,发现无一能完全复现,并分析阻碍因素。
通用性能顶尖 = 领域性能顶尖?DomainCodeBench:一个多领域代码生成基准
提出覆盖 12 个应用领域、15 种编程语言的 2400 个任务的多领域代码生成基准,揭示 LLM 通用编码能力与领域能力并不一致。
增强LLM代码生成:一种基于相似度的集成选择方法
提出面向LLM代码生成的集成方法,通过语法与语义相似度及行为等价性投票,从多模型候选中选出最可靠程序。
AssertFlip:通过反转 LLM 生成的通过测试来复现 Bug
AssertFlip 先生成通过测试再反转为失败测试,用 LLM 自动复现 Bug,在 SWT-Bench 上达到最佳效果。
对齐需求:面向大语言模型代码生成的规约对齐
提出 Specine,通过识别、提升并对齐编程规约,缓解 LLM 代码生成与需求不一致的问题。
用于 SWE issue 测试生成与选择的异构提示与执行反馈
提出异构提示与执行反馈技术,自动为软件工程 issue 生成并选择复现测试。
RefAgent:一种基于多智能体 LLM 的自动软件重构框架
提出多智能体 LLM 框架 RefAgent,通过规划、执行、测试与反思迭代自动完成端到端软件重构。
衡量错误代码对测试生成的影响
首次量化被测代码正确性对 LLM 测试生成的影响:错误代码令测试准确率、覆盖率与缺陷检测显著下降。
SecureReviewer:通过安全感知微调增强大语言模型的安全代码审查能力
提出安全感知微调策略并结合RAG增强LLM安全代码审查,构建数据集与SecureBLEU指标。
EmbedAgent:面向嵌入式系统开发的大语言模型基准测试
提出角色化范式 EmbedAgent 与基准 EmbedBench,系统评测 LLM 在嵌入式编程、电路设计与跨平台迁移中的能力并提出改进策略。
论 LLM 对代码正确性的内部表示
通过对比正确与错误代码的隐藏状态,发现并利用 LLM 内部的代码正确性表示来筛选更可靠的生成代码。
大语言模型时代软件工程研究的实证与可持续性方面:一个反思
本文系统梳理 ICSE 上基于大语言模型的软件工程研究,反思其基准测试严谨性、数据污染、可复现性与可持续性挑战并提出改进建议。
评估大型语言模型代码执行推理的连贯性与一致性
提出 CES 基准,评估 LLM 模拟程序执行时的正确性、连贯性与一致性,揭示推理捷径与数据泄漏。
面向深度学习编译器的优化感知测试生成
提出 OATest,从文档测试中提取优化模式并嵌入多样的计算图上下文,合成优化感知测试以暴露 DL 编译器缺陷。
面向 LLM 的全局、以人为中心的解释:从 token 到可解释的代码与测试生成
提出 CodeQ 框架,将 token 级归因聚合映射为高层编程类别,为代码大模型提供全局可解释性。
从因果视角度量、解释与缓解 LLM 生成代码中的代码异味
以倾向性异味分数为工具做因果分析,揭示提示设计与模型架构如何影响 LLM 生成代码的代码异味,并提出缓解策略。
量化代码大语言模型中的记忆化优势
提出基于扰动的记忆优势度量,比较8个开源代码LLM在19个基准上对训练见过与新颖代码的性能差距。
RESTifAI:基于LLM的可复用REST API测试工作流
提出RESTifAI,用LLM生成可复用、CI/CD就绪的REST API测试,覆盖正常路径与负面用例。
好的开始是成功的一半:位置感知与轨迹引导的迭代式自动化漏洞修复
提出 LoopRepair,利用补丁位置信息与测试失败轨迹评估,迭代生成更高质量的漏洞修复补丁。
Valg:一个基于强化学习的快速 Java 运行时验证工具
提出并实现基于强化学习的 Java 运行时验证工具 Valg,通过减少冗余监控大幅降低开销。
MaCTG:面向自动编程的多智能体协作思维图
提出多智能体协作思维图框架,用动态图结构做任务分配与验证,实现项目级自动编程并大幅降低开销。
SpecOps:面向真实世界 GUI 环境的全自动 AI 智能体测试框架
提出 SpecOps,用四个 LLM 专家智能体全自动测试真实 GUI 环境中的 AI 智能体。
从分散到结构化:自动化架构知识管理的愿景
提出自动化流水线,将异构软件制品中的架构知识抽取、链接、消解不一致并整合为可问答的结构化知识库。
Change And Cover:基于 Pull Request 的最后一英里回归测试增强
提出 ChaCo,用 LLM 针对 PR 中未覆盖行增强回归测试,并友好集成到现有测试套件。
面向程序修复的内存高效大语言模型:语义引导的补丁生成
提出 FLAMES,用语义引导最佳优先搜索替代束搜索,降低 LLM 程序修复内存消耗并提升修复效果。
面向演化感知运行时验证的细粒度分析
提出细粒度分析,使演化感知运行时验证更精确地只重监控受代码改动影响的规约。
深度学习模型修复方法的综合研究
对16种深度学习模型修复方法进行大规模实证评估,覆盖修复效果及鲁棒性、公平性与向后兼容性等影响。
幻觉证书:使用生成式语言模型对 TLS 证书验证进行差分测试
利用生成式语言模型合成证书,对 TLS 证书验证进行差分测试以发现安全缺陷。
ProxyWar:在游戏竞技场中动态评估LLM代码生成
提出ProxyWar,将LLM生成代码作为游戏智能体,通过多智能体锦标赛动态评估其代码生成质量。
似同实异:防止针对软件抄袭检测的重构攻击
提出基于代码属性图与图变换的可扩展框架,抵御重构混淆,显著提升抄袭代码检测。
注意力为何失败:基于注意力的神经网络故障分类体系
首次系统研究注意力神经网络真实故障,提出七类注意力特有故障分类和四条诊断启发式。
模仿游戏:利用智能 Agent 复现深度学习缺陷
提出 RepGen,利用 LLM 驱动的智能 Agent 自动复现深度学习 bug,复现率达 80.19%。
像剥洋葱一样建模:分层分析驱动的自动行为模型生成
提出 LATO,以分层分析策略引导 LLM 从需求文本生成可执行 UML 活动图,提升行为建模的准确性与完整性。
面向可配置软件系统多因素变异性的贝叶斯多级性能模型
提出 HyPerf 贝叶斯多级性能模型,区分设置不变与可变影响,用更少样本实现准确预测。
Y-Map:一种用于预测性能感知对象关系映射的多编码器 Y 架构
Y-Map 用神经-符号回归离线预测 ORM schema 的插入延迟、查询延迟与内存,实现免基准测试的帕累托式选型。
打破单测试器局限:面向多用户功能测试的多智能体 LLM 方法
提出 MAdroid,用 LLM 驱动的多智能体协作自动化移动应用多用户交互功能的测试。
人类与LLM会被同一类代码困扰吗?基于注视相关电位与LLM困惑度的实证研究
通过EEG与LLM困惑度对比,发现人类与LLM对代码的困惑在位置和强度上相关。
利用大语言模型实现工业过程自动化
探索将LLM用于工业过程自动化中专有语言的编程任务,以加速制造系统开发。
从代码变更到质量提升:基于 PyQu 的 Python 机器学习系统实证研究
大规模实证研究揭示 Python 机器学习系统中代码变更与软件质量的关系,提出工具 PyQu 并给出 61 类质量提升变更。
细粒度实体关系用于追踪自然语言与代码漏洞制品的实证研究
基于1000个漏洞的实证研究,揭示自然语言与代码中细粒度漏洞实体(触发、现象、修复)的关系模式,并评估自动提取方法。
修复 LLM 执行以实现安全的自动编程
提出基于机制可解释性的方法,在推理时拦截并修改 LLM 中诱发漏洞的知识表示,提升生成代码安全性。
以太坊存储变量的精确静态识别
提出静态分析技术,从 EVM 字节码中精确识别链上存储变量及其深层数据结构,精度和召回率均超 94%。
GPTrace:使用LLM嵌入的高效崩溃去重
用大语言模型嵌入向量结合聚类对模糊测试崩溃输入去重,效果显著优于手工栈迹比较与现有SOTA方法。
Node.js 中 WebAssembly 使用的实证研究
首次系统研究 Node.js 中 WebAssembly 的使用,并发布含 510 个可执行包、217 个 Wasm 模块的数据集。
人工智能时代的软件漏洞管理:行业视角
基于60名从业者调查,揭示AI工具在软件漏洞管理中的采用现状、障碍与改进建议。
Acoda:面向基于 LLM 分析的对抗性代码混淆防御
提出基于遗传算法的对抗代码混淆框架 Acoda,用 8 种保语义混淆方法诱导 LLM 拒绝或误读代码分析。
基于知识增强提示的 LLM API 实参补全
用知识图谱对齐检索上下文子图来增强提示,显著提升 LLM 对 API 方法实参的补全精度。
行为驱动开发遇上大语言模型:我们需要它们吗,它们管用吗?
通过11个Java项目的实证研究揭示BDD胶水代码的维护负担,并提出首个从Gherkin步骤生成Java胶水代码的检索增强少样本方法AutoGlue。
EchoFuzz:利用大语言模型增强智能合约模糊测试
提出 EchoFuzz,用大语言模型缓解智能合约模糊测试中的状态转移逻辑鸿沟与变异序列冗余问题。
解析这个!用 Goblin 召唤上下文敏感输入
提出 Goblin,基于带语义约束的上下文无关文法,借助 SMT 求解器生成满足上下文敏感约束的测试输入。
迈向关键 ML 使能系统的行为空间测试
提出行为空间几何测试方法,通过估计 ML 组件内部行为相似性结构来定义覆盖率并指导演化后的补充测试。
多模型随机系统的验证
提出 ULTIMATE 框架,统一多类随机模型的表示、验证与综合,并处理模型间依赖。
黑盒环境下复杂编程语言的上下文无关文法推断
提出 Crucio,通过分解森林与分布矩阵从黑盒样本中为 C/C++/Java 等复杂语言高效推断上下文无关文法。
面向代码重构的大型语言模型
博士提案研究用大语言模型识别与重构可维护性问题,并构建重构数据集、评测多种提示技术。
用于训练自动程序修复模型的合成仓库级缺陷数据集
提出基于LLM代码改写的可扩展合成缺陷流水线,构建含中间修复步骤的仓库级数据集SWE-Synth,训练效果媲美人工数据集。
为 AI 装上眼睛:眼动追踪生成式 AI 代码建议带来的微中断
首个针对开发者查看生成式 AI 代码建议过程的眼动追踪研究,量化了建议带来的认知成本与「微中断」。
SymRadar:以 PoC 为中心的有界验证用于漏洞修复
提出 SymRadar,用围绕 PoC 输入的函数级欠约束符号执行验证补丁,召回率达 100%、特异度 78%。
软件供应链中的级联漏洞攻击
提出用异构图与HGAT建模SBOM依赖,发现并预测软件供应链中的级联漏洞链。
并非所有输入都有帮助:我们该向 LLM 提供什么信息来做漏洞修复?
系统考察不同输入信息类型对 LLM 漏洞修复性能的影响,并给出输入选择与组织方式的实用指南。
揭示暗物质:连接人机协作中的隐性知识与系统知识
提出人机协作需共享知识空间,整合系统文档与隐性专家知识,并以差分测试为案例原型。
何时回答、何时弃权:面向可靠代码预测的决策框架
提出一套决策框架,通过正确性估计、不确定时弃权和外部验证/修复,提升代码语言模型预测的可靠性。
QSolver:一种量子约束求解器
提出首个量子约束求解器 QSolver,将量子程序与多时刻约束符号化并用 SMT 求解满足约束的量子态。
面向自动推断约束以识别数据分析中的隐式假设
提出用静态分析自动推断代码约束,显式化数据分析脚本中的隐式假设以提升可复现性。
通过 Provider 演化知识自动化 Terraform 代码迁移
提出 TerraMod,利用 changelog、API schema 与弃用链接构建迁移上下文来引导 LLM,自动完成 Terraform 跨 Provider 版本的破坏性变更升级。
构建代码仍然是代码:为流水线投毒寻找解药
提出开发阶段隔离,将构建自动化视为程序代码来建模权限,原型 Foreman 可检测 XZ Utils 攻击中的投毒测试文件。
结构化因果世界模型:迈向安全关键系统与受保障 AI 的保证框架
提出 SCWM,用符号、概率与因果三层建模安全关键系统的运行情境,支持可追溯危害分析与情境感知安全契约。
从执行到嵌入:利用数据差异信号丰富代码表示以生成注释
提出执行感知嵌入,将数据差异信号与代码表示融合,以改进自动注释生成。
使用自动模板化与大语言模型将 PL/I 宏过程翻译为 Java
提出结合自动模板化与大语言模型的方法,将 PL/I 宏过程翻译为可复现其生成代码行为的 Java 程序。
超越规约符合性:一种验证利益相关者期望的逻辑
提出语义期望逻辑 SEL,将利益相关者期望形式化并量化,以弥补规约符合性验证无法发现的验证鸿沟。
AtomGraph:使用多模态图卷积网络检测智能合约中的原子性违反
提出 AtomGraph,用多模态 GCN 融合字节码 CFG 结构与操作码语义特征,自动检测智能合约原子性违反。
面向可靠代码智能的即时输入适配
提出即时输入适配,以低开销提升代码语言模型预测可靠性,避免重训练、改架构或重写提示。
Setup AGent (SAG):面向自主端到端 Java 项目配置的双模型 LLM 智能体
提出双模型 LLM 智能体 SAG,自主完成端到端 Java 项目环境配置,以缓解 Java/JVM 仓库配置成功率低的问题。
使用大型语言模型推理学习者 Scratch 程序中的缺陷
探索用大型语言模型解释 Scratch 程序分析发现的缺陷,并评估其缺陷推理能力。
EVATest:基于奖励引导检索增强生成的领域导向 Android GUI 测试
提出 EVATest,用领域探索日志与事件奖励引导 LLM 检索增强生成 Android GUI 测试序列。
WhyFlow:面向污点分析意义建构的疑问式调试器
提出首个面向终端用户的问答式污点分析调试界面,支持 why、why-not、what-if 提问与推测式分析,显著降低理解成本。
CombCT:基于组合测试的编译器测试
首个用组合测试探索优化序列空间的编译器测试方法,能检出更多由特定优化序列触发的缺陷。
针对高级混淆的 Android 第三方库检测工具鲁棒性实证研究
对 Android 第三方库检测工具在高级混淆(如包层次混淆)下的鲁棒性进行实证研究。
迈向自编码信息系统的架构设计
提出自编码信息系统概念:系统在运行时自主生成、测试并重部署源代码,以动态适应结构和行为。
Atomizer:面向意图驱动提交解缠的基于LLM的协作多智能体框架
提出 Atomizer,用意图导向思维链与分组者-审查者多智能体协作循环,实现复合提交的语义意图解缠。
CoReX:用于调试回归失败的上下文感知基于精化的切片
提出 CoReX,一种上下文感知的基于精化的切片方法,用于定位回归失败相关的代码语句。
基于迭代值流精化的快速流敏感 C 程序划分
提出快速流敏感 C 程序划分方法,通过迭代值流精化按安全策略实施最小权限。
利用自配置参数增强符号执行
提出 PARASUIT,自动识别并配置符号执行参数,无需人工调参,从而提升分支覆盖与缺陷发现。
理解 Hugging Face 模型卡中示例代码的可执行性:一项实证研究
大规模实证研究显示 Hugging Face 模型卡示例代码 65.98% 无法执行,并归纳出三类根因。
利用不可满足核心与可满足模型加速 IC3 验证
提出复用不可满足核心与可满足模型的 IC3 验证加速方法,显著减少求解器调用并提速。
对大语言模型代码推理能力的全面与真实评估
提出从推理层级、中间推理过程质量与真实项目语境三方面全面评估 LLM 代码推理能力的研究方向。
拒绝盲猜:基于上下文感知制表的高效上下文无关语言可达性
提出上下文感知的制表算法,在CFL可达性推导中利用上下文避免生成无用边,从而提升静态分析效率。
D-BUNDLR:解构 JavaScript Bundle 以实现有效静态分析
提出 D-Bundlr,用代码变换、静态分析、机器学习与动态验证解包 JS bundle 并恢复库源码,以提升静态分析效果。
使用智能体式 LLM 进行测试坏味重构:Gemini-2.5-Pro 的实证研究
实证评估 Gemini-2.5-Pro 以单/多智能体工作流检测并重构五类测试坏味,单智能体正确率达 75%,多智能体收益有限。
面向 Python 的混合故障驱动变异测试
提出七种源自 Python 反模式的变异算子,用静态与动态分析混合实现 PyTation,扩充故障模型并减少等价变异体。
注意力距离:结合大语言模型的定向模糊测试新度量
提出用大语言模型上下文分析计算的注意力距离替代物理距离,引导定向灰盒模糊测试并显著提升效率。
迈向智能、可靠且安全的 CI/CD 工作流自动化
结合实证研究与学习型方法,提升 GitHub Actions 工作流的可靠性、安全性与自动生成质量。
微服务系统的架构一致性检查
提出一种AI辅助的微服务架构一致性检查方法,覆盖结构与行为维度,提升自动化、准确性与可扩展性。
LLM 原生应用:迈向软件工程的新范式
提出LLM原生应用概念,以LLM为编排核心,并给出参考架构、生命周期模型及文献综述copilot案例。
测试期望高度约束输入的程序
提出输入正确性与有趣性度量,并探索生成既正确又有趣的输入以测试输入校验后的程序逻辑。
Scalpel:通过组装模型组件对汽车深度学习框架进行测试
在模型组件(head/neck/backbone)层面组装测试输入模型,对汽车深度学习框架做差分测试以发现崩溃与数值不一致缺陷。
NotDec:基于跨过程类型恢复的 WebAssembly 反编译
提出 WebAssembly 反编译框架 NotDec,通过跨过程类型恢复生成可读且语义一致的 C 代码。
TACO:编码辅助任务中大语言模型的可信度评估
提出 TACO 框架与两个基准,从代码质量和用户意图对齐两方面细粒度评估 LLM 在编码辅助任务中的可信度。
LVing:面向 Rust 的漏洞检测与可视化平台
提出 LVing,基于 LLVM IR 与代码属性图的 Rust 漏洞检测和交互式可视化平台,可发现并发漏洞。
使用值具体化提升自动化测试输入数据生成的性能
提出值具体化变换约束逻辑公式,缓解 COBOL 测试输入生成中字节级建模带来的求解器性能下降。
LLM 辅助的自适应机器人不确定性识别
提出基于 LLM 的方法、工具与分类法,自动识别自适应机器人中的不确定性,并分享工业实践体验。
面向软件工程的人本 AI
研究 LLM 等 AI 工具如何在不损害软件质量与开发者福祉的前提下融入软件工程生命周期。
迈向任务无关的 LLM 嵌入式应用评估框架
提出任务无关评估框架,用元模型从可复用原则自动合成 LLM 嵌入式应用的评估。
SeRe:一个与真实评审活动对齐的安全相关代码评审数据集
用主动学习集成分类构建大规模安全相关代码评审数据集 SeRe,并给出安全评审反馈生成基准。
面向更优故障定位的缺陷相关测试生成
提出基于LLM的FLTestGen,利用失败测试为可疑方法生成缺陷相关测试,提升故障定位效果。
面向 Android 第三方库检测的全局匹配
指出局部相似匹配忽略周围类上下文,提出面向 Android 第三方库检测的全局匹配思路。
路径敏感数据依赖分析的高效强更新
提出高效强更新方法,在保持路径敏感精度的同时降低指针间接数据依赖分析的开销。
GUISpector:面向 GUI 原型中自然语言需求自动验证的 MLLM 智能体框架
提出基于多模态 LLM 智能体的框架,自动验证 GUI 原型对自然语言需求的满足情况并生成可操作反馈。
基于 MLIR 的可解释 AI(IAM):面向神经网络透明性的统一框架
将可解释性作为一等编译原语,基于 MLIR/JAX 统一稀疏自编码器、归因与策略引导,消除冗余计算。
面向测试目标的强化学习:实现有效的 SLM 测试生成
提出 RLTT,用源自单个测试目标(如特定分支或变异体)的奖励信号优化小语言模型,生成目标导向的单元测试。
可理解性引导的自动代码重构
提出以代码可理解性为引导原则的自动重构研究框架,并构建可理解性代理与预测模型。
DBcover:面向覆盖率提升的白盒 SQL 测试生成框架
提出 LLM 驱动的白盒 SQL 测试生成框架 DBcover,借助 SQL-路径知识图谱显著提升 RDBMS 代码覆盖率。
由内而外:揭示注释内化如何左右大语言模型的性能表现
首个面向软件工程的LLM概念级可解释性研究,揭示注释被内化为可区分的潜在概念并显著影响任务性能。
当我们架构 LLM Agent 系统时,我们在架构什么?
提出 LLM Agent 系统架构应围绕控制、知识、责任、约束与演化五个结构维度,而非仅关注组件与连接件。
迈向自动化的软件故障分析
探索用大语言模型自动化开源软件故障分析,显著提升效率但故障分类仍受限。
面向时序规约的模糊测试:用于触发-动作编程的智能家居集成
提出面向 LTL 时序规约的模糊测试方法,规避模型检测的状态爆炸,发现智能家居触发-动作集成中的规则缺陷与安全风险。
RISE:基于查询归约的规则驱动 SQL 方言翻译
提出规则驱动并结合查询归约的 SQL 方言翻译方法,将复杂查询拆解以缓解 LLM 处理长复杂 SQL 的困难。
GNU Patch 与 Git Cherry-Pick 的数十年:我们能做得更好吗?
提出语言无关补丁技术 mpatch,通过源到目标匹配定位变更,显著提升自动打补丁成功率并减少手工修复。
推进面向代码相关任务的语言模型
从数据质量、模型架构与推理能力三方面提升代码语言模型,提出CODA、CodeDenoise、LEAM/LEAM++、μFiX和Specine。
迈向可扩展且可解释的移动应用风险分析:基于大语言模型的方法
提出 Mars,用 LLM 从风险识别树提取指标,自动判定移动应用风险并生成证据链。
自动化代码变更理由生成以支持软件维护任务
面向代码变更理由的细粒度、个性化、任务定制化自动生成,支撑代码评审、调试与新人上手等维护任务。
我的 RPC 响应可靠吗?在上下文中检测区块链客户端的 RPC 缺陷
提出 EthCRAFT,通过生成区块链上下文与 RPC 调用,并用多客户端响应交叉验证来检测 RPC 缺陷。
DeFT:为自动驾驶规划维护确定性并抽取单元测试
从非确定性的系统级场景测试中抽取规划模块的确定性单元测试,消除复现的不稳定性。
基于 LLM 的 DBMS 测试用例生成:通过蒙特卡洛树搜索
提出 MIST,用特征引导的错误驱动合成与 MCTS 变异,为专有 SQL 方言生成语法有效且高覆盖的测试用例。
FM4MC:改进微服务链的特征模型——面向更高效的配置与验证
提出 FM4MC,通过切片为部分特征模型并按复杂度选择性 SAT 求解,大幅加速微服务链特征模型验证。
迈向面向自动化程序修复的认知智能体驱动提示优化
提出用强化学习与认知智能体在反馈闭环中自主优化提示,以提升 LLM 程序修复的稳定性与正确性。
面向测试的编程:重新思考 GenAI 时代的编码
提出面向测试的编程(TOP)范式,开发者只需审查由自然语言规约生成的测试代码,生产代码交由 LLM 生成。
可读性的隐藏成本:代码格式化如何悄然消耗你的 LLM 预算
大规模实证表明移除代码格式化元素可平均减少 24.5% 输入 token,而 LLM 补全性能几乎不受影响。
SEAlign:面向软件工程智能体的对齐训练
提出 SEAlign 对齐框架,利用软件工程工作流、MCTS 与偏好优化,使代码模型胜任真实软件工程任务。
面向在线配置性能学习的双重分层漂移适应
提出 DHDA,一个双重分层在线学习框架,分别捕获并适应配置性能学习中的全局与局部概念漂移。
障眼法:通过隐式恶意提示越狱基于 LLM 的代码生成
提出 CodeJailbreaker,把恶意意图隐式藏入 commit message 等隐蔽信道,绕过 LLM 代码生成的安全机制。
利用大语言模型生成高能效代码:现状如何?
实证比较LLM生成、人类与绿色软件专家编写的Python代码能耗,专家代码始终更节能。
回归基础:用LLM辅助检索重新思考Issue-Commit链接
提出现实评测设定RDS,发现深度学习不如传统IR,并用向量检索与LLM重排实现EasyLink。
一抹即除!通过机器遗忘擦除代码语言模型中的敏感记忆
提出 CodeEraser,用梯度上升式机器遗忘免重训地擦除代码语言模型中的敏感记忆,并保持代码结构与功能正确性。
InferLog:面向 ICL 的前缀缓存加速在线日志解析的 LLM 推理
提出 InferLog,通过前缀感知的 ICL 精炼与元学习配置调优,在不损失准确率的前提下加速在线日志解析的 LLM 推理。
毒性将至:预测 GitHub 上的对话脱轨
构建 GitHub 对话脱轨数据集,并提出基于 LLM 两步提示的毒性对话预测框架。
输入归约增强的基于 LLM 的程序修复
提出 ReduceFix,用 LLM 生成自动归约器缩小失败测试输入,缓解长提示的 lost-in-the-middle 问题,显著提升修复成功率。
软件工程研究中开放科学的现状:以 ICSE 制品为例的案例研究
通过实际执行 100 个 ICSE 复制包,揭示制品可获取性、可执行性与可复现性之间的显著差距。
PreServe:基于分层预测的 LMaaS 系统智能管理
提出分层预测驱动的 LMaaS 管理框架,提前调整资源分配与请求路由,显著降低尾延迟与资源开销。
通过小型语言模型作为评判者改进代码生成
训练前沿小语言模型判断并排序代码候选,证明其低成本即可媲美大模型并优于 RankEF。
面向大语言模型系统化的反事实公平性评估:CAFFE 框架
提出 CAFFE,一个意图感知的反事实公平性测试框架,用结构化测试用例与语义相似度更可靠检测 LLM 偏见。
代码理解任务中知识蒸馏的实证研究
系统实证评估知识蒸馏在代码理解任务中的有效性,覆盖两类蒸馏方法与多组师生模型配置。
评估基于LLM的互操作性的有效性
评估LLM驱动的运行时系统互操作策略,qwen2.5-coder:32b在多数场景有效,单位换算场景需CODEGEN。
使用大语言模型评估生成的提交信息
系统研究用大语言模型自动评估提交信息质量,发现思维链加少样本提示可达到接近人工的评估水平。
面向以社区分析支持开源库维护者
提出基于社区分析,帮助开源库维护者洞察依赖生态的 API 使用并改进测试与维护决策。
先假设后验证:面向微服务的路径并行推测式根因分析
提出 SpecRCA,用"先假设后验证"范式让 LLM 快速草拟候选根因并路径并行验证,提升微服务根因分析的准确性与效率。
冗余作为可解释性的阴影:面向 AI 密集型系统的权衡原则
提出可解释性、冗余与可持续性之间的权衡原则,并用带类型上下文记忆框架指导冗余感知系统设计。
解锁沉默需求:业务逻辑驱动的迭代式需求自动补全
提出业务逻辑驱动的迭代需求自动补全方法 ReqCompleter,用 CRUD 缺口触发 LLM 补全并抑制幻觉。
用于测试 Solidity 编译器的有界穷举随机程序生成
提出有界穷举随机程序生成方法并实现 Erwin,在 Solidity 编译器中检出 26 个缺陷。
用大锤敲核桃?重新审视自动化编译器故障隔离
论文比较基于 bug 引入 commit 的 Basic 策略与代表性 SBFL 技术,发现 Basic 在编译器故障隔离上总体更优。
以字节码为中心的 Java 项目中已知漏洞依赖检测
提出 Jaralyzer,直接分析字节码以检测重编译、重打包等修改后依赖中的已知漏洞。
灰盒模糊测试中的交互效应研究
揭示变异算子顺序对灰盒模糊测试有效性的交互效应,并提出学习最优变异序列的 MuoFuzz。
探索 Prompt 作为混合需求与解决方案工件
提出 Prompt Triangle 模型,将 AI 编码提示视为混合需求与解决方案信息的演化制品,并给出实证议程。
依赖感知的残余风险分析
揭示现有 GoTu 估计器因覆盖率为松上界且忽略覆盖元素依赖而高估残余风险,并提出依赖感知的残余风险分析。
Defects4REST:面向 REST API 受控测试与调试研究的真实缺陷基准
构建首个从 GitHub 挖掘的 REST API 真实缺陷基准,含 607 个缺陷、分类体系与缺陷/修复版本,并揭示现有测试工具仅能检测 10% 的缺陷。
初探模型供应链:风险视角
首次从风险视角刻画 AI 模型供应链,关注基座模型经微调、量化、合并形成衍生模型的现象。
UniCoR:面向鲁棒跨语言混合代码检索的模态协作
提出 UniCoR,通过多视角对比学习与分布一致性学习实现鲁棒跨语言混合代码检索。
探索并改进基于提示大语言模型的真实世界漏洞数据生成
系统探究七种先进大语言模型提示生成漏洞样本的潜力与不足,并据此提出改进方法。
JEDI:Java 声明式与命令式查询的评估
提出 JEDI,一个由 SQL 基准自动生成 Java 基准的套件,用于评测 Java Stream API 并总结高效写法。
对话模型与人类在回答技术问题上的比较:Firefox 案例
通过 Mozilla Firefox 真实查询,比较人类、GPT 与 RAG-GPT 回答技术问题的效果。
迈向抗量子软件工程:后量子密码迁移的愿景
提出抗量子软件工程(QSSE)新方向与 AQuA 框架,为后量子密码迁移给出检测、语义重构与混合验证三支柱议程。
小改动,大麻烦:揭示并解析 PyPI 生态中的许可证变体以实现不兼容性检测
首次实证研究 PyPI 许可证变体,并提出基于 diff 与大模型的 LV-Parser 与 LV-Compat 检测许可不兼容。
保障 AI 供应链安全:我们能从开发者报告的 AI 项目安全问题与解决方案中学到什么?
通过分析 Hugging Face 与 GitHub 讨论,构建 AI 项目安全问题与解决方案分类体系,揭示 AI 供应链安全挑战。
面向 LLM 修复的基于语义的优化方法:以代码生成为例
提出 STAR,将 LLM 修复重构为语义驱动的优化过程,定位并修补故障神经元,在代码生成任务上显著超越现有方法。
LLM4Perf:大语言模型是多目标性能建模的有效采样器
提出反馈式框架 LLM4Perf,实证表明 LLM 引导采样在多目标性能建模中优于传统基线。
PenForge:面向自动化渗透测试的即时专家代理构建
提出 PenForge,在渗透测试中动态构建 LLM 专家代理,零日设定下漏洞利用成功率提升 3 倍。
用 LLM 规模化评估学生模型:把反馈融入教学实践
将基于 LLM 的反馈系统 Athena 与学习平台 Artemis 集成,使开放式 UML 建模练习的自动评估可规模化落地。
SEALing the Gap:面向 LLM 推理碳排估计的多基准驱动实例化参考框架
提出 LLM 推理碳排估计的参考框架设计原则,并实现多基准驱动的逐提示碳排估算原型 SEAL。
AI 驱动的软件开发:大语言模型时代的新课程概念与评估模型
提出 AI 驱动软件开发课程及多维度评估模型,以过程、代码与反思报告衡量学生在 LLM 时代的学习。
用 AI 辅助提升调试技能:面向调试支持的实时工具
提出集成于 IDE 的 AI 实时调试助手,结合 RAG、程序切片与启发式,辅助调试教学。
通过人类-LLM协作的上下文自适应需求缺陷预测
提出人机协作方法,用LLM思维链与验证示例自适应预测需求缺陷。
打破强封装:Java 模块滥用的一项综合研究
首个针对 Java 模块系统强封装被破坏(BSE)问题的实证研究,基于 4,079 个 GitHub issue 刻画其症状、来源与解决方式。
公平性不只是伦理问题:通过数据相关性调优的性能权衡来缓解 ML 软件中的偏差
提出预处理方法 CoT,利用 Phi 系数与多目标优化调优数据相关性,在缓解 ML 偏差的同时改善性能。
变异性感知的模糊测试
提出 VAFuzz,将变异性感知分析融入模糊测试过程,通过新的种子队列与变异策略提升配置空间探索能力。
多位置软件模型补全
提出首个多位置软件模型补全方法 NextFocus,用全局嵌入与注意力预测跨位置的协同修改,Precision@k 达 0.98。
StorFuzz:利用数据多样性克服模糊测试平台期
提出 StorFuzz,用数据多样性度量替代仅靠代码覆盖率来判断模糊测试进展,以突破长期平台期。
面向聚焦式自动驾驶系统测试的不当行为预测
提出 Foresee,通过预测近失事件并局部模糊测试,更高效发现自动驾驶系统隐藏故障。
HistoryFinder:以精确基准与增强算法推进方法级源代码历史生成
提出方法级代码历史重建工具 HistoryFinder,并构建两个更精确的基准 oracle,在精度、召回与效率上全面超越现有工具。
TestifAI:基于断层扫描的深度学习系统测试
提出 TestifAI,用部分模型断层扫描从低阶扰动测试重建高阶鲁棒性,大幅减少推理次数。
SEER:通过自探索深度推理增强思维链代码生成
将思维链代码生成建模为决策问题,用自探索推理路径、质量感知训练与自适应推理提升生成质量。
通过基于变异的推断调试 WebAssembly 运行时中的性能问题
提出 WarpL,通过变异推断定位 WebAssembly 运行时中导致性能问题的次优指令序列。
torte:按需定制的可复现特征模型实验
提出开源工具 torte,集成现有工具与原创贡献,支持可复现、灵活的特征模型实验,并可分析 Linux 内核历史。
CCLInsight:以原语为中心的分析揭示 GPU 集合通信库的洞见
提出以原语为中心的 GPU 集合通信库性能分析与工具 CCLInsight,揭示配置规律并显著优化 NCCL/MSCCL。
在 DeFi 智能合约上强制执行控制流完整性
提出 CrossGuard,通过在链上强制控制流白名单来拦截 DeFi 智能合约攻击,无需预先知晓具体攻击手法。
基于大语言模型的知识增强日志异常检测
提出 LogPipe,通过动态知识库增强 LLM 日志异常检测,提升准确率并降低成本与增强可解释性。
由约束表达型中间表示驱动的3D软件合成
提出约束表达型中间表示驱动的3D软件合成,支持元素级修改并处理空间与语义约束。
SAFE:利用 LLM 从多模态碰撞数据出发实现场景驱动的 ADS 测试
SAFE 用 RAG、知识引导提示、CoT 与自校验从多模态碰撞数据重建可复现场景,提升 ADS 测试的违规与真实事故检出。
概念验证(PoC)作为一等架构决策工具
主张将PoC从非正式实验提升为一等的、面向架构决策的可重复分析工具。
揭示信息物理系统状态转换中的故障:一种应用于 sUAS 的基于模糊测试的方法
提出 SaFUZZ:面向 sUAS 的状态感知模糊测试流水线,可检测状态转换、失效保护与人机交互故障并生成故障树。
SAT 求解器能跟上 Linux 内核的特征模型吗?
通过历史特征模型与历史 SAT 求解器的实证分析,发现 SAT 求解器整体跟不上 Linux 内核特征模型的增长。
测试脆弱性:刻画由被测代码变异引发的波动性
揭示标准变异算子对被测代码的变异本身会诱发测试波动性(test flimsiness),威胁依赖确定性测试结果的变异测试等技术。
像人类开发者一样思考:利用社区知识进行结构化代码推理
提出 RT-Distiller,从开发者社区讨论中挖掘并结构化推理链,微调 LLM 提升代码推理能力。
RAGas:面向智能合约的检索增强 Gas 优化与持续知识集成
提出 RAGas,用检索增强的大模型三阶段框架自动定位并修复智能合约的 Gas 低效问题。
论公平性实践的鲁棒性:一个系统化评估的因果框架
提出基于因果的测试框架,评估公平性最佳实践在标签错误、数据缺失与分布偏移下的鲁棒性。
从 RSE 到 AI4RSE:面向 AI 增强研究软件的象限模型
提出“象限模型”,系统刻画 AI(尤其是生成式 AI)如何重塑研究软件工程(RSE)。
模型发现与图模拟:通往混沌工程的轻量级入口
提出模型发现与图模拟方法,自动从运行数据合成依赖图,为混沌工程提供低风险、可 CI/CD 化的轻量入口。
超越答案引擎:LLM 作为数据结构与算法教育中的推理伙伴
评估四种 LLM 在 DSA 问题上的正确性、可维护性与解释推理,发现其为推理伙伴但尚不能自主解题。
Go 中表驱动测试的特征刻画与重构
对 Go 表驱动测试开展实证研究,并提出自动化重构为缺少子测试的表驱动测试引入子测试。
软件公平性测试有多公平?
本文将软件公平性测试视为文化情境化实践,从指标、数据集和伦理三个维度批判其普遍主义假设。
负责任 AI 的模型卡:停止制卡,开始建模
将系统安全工程的论证模型、模板与操作引入 AI 安全,并把模型卡重构为可操作的安全工件。
设计多元宇宙:面向设计演化与协同演化的科学模型
提出“设计多元宇宙”模型,把设计演化刻画为上下文敏感的非确定性迁移系统,并正交分离用于一致性推理的观测链接理论。
揭示扩散大语言模型在软件工程任务中的潜力:一项实证研究
首次系统评估扩散大语言模型在代码生成、缺陷检测与程序修复中的表现,发现其准确率与推理延迟均优于自回归模型。
通过增量探索并发路径的中断驱动程序原子性违反检测
提出混合测试框架 DD4AV,解耦输入空间与调度空间的探索,高效检测中断驱动程序的原子性违反。
AI 辅助代码评审作为代码质量与自我调节学习的支架:一项经验报告
将 LLM 评审员嵌入 GitHub PR 工作流,跨两届课程验证其能规模化支撑代码评审学习并缓解过度依赖。
面向ML赋能执法系统的数据依赖目标建模
提出数据依赖的目标建模,以在开发早期对齐ML赋能执法系统行为与利益相关者目标。
利用设计感知上下文的大语言模型代码注释生成
将设计文档作为上下文输入 LLM 生成代码注释,实验表明设计感知上下文可提升注释的有用性。
用推理取代训练:以 LLM 重新诠释经典机器学习流水线
提出 LLM 能否替代依赖标注、特征工程与重训练的经典 ML 流水线这一核心问题。
面向全生命周期的可信生成式AI驱动的未来关键CPS工程
提出用可信生成式AI贯穿关键信息物理系统全生命周期的软件工程愿景与研发议程。
面向弥合开源软件语言鸿沟:LLM 驱动的文档翻译
实证评估开源文档翻译现状与两个 LLM 的翻译能力,揭示语义翻译可行但结构保持不足。
面向 ONNX 模型的选择性量化调优器
提出 SeQTO,对 ONNX 模型选择性量化并在 CPU/GPU 上部署评测,用帕累托多目标优化平衡精度与体积。
关于降低 RAG 系统能耗所提技术的有效性:一项受控实验
通过受控实验评估五种降低 RAG 系统能耗的技术,发现其中两种可在不损准确率的情况下显著降低能耗与延迟。
将合并冲突转化为冲突引发的可变性
提出把合并冲突视为一种软件可变性,以支持按需分析、探索与延迟批量解决冲突。
无原则地提示:学生是否将软件工程知识迁移到 LLM 使用中?
对照研究发现,研究生用 LLM 解决库升级任务时往往未迁移规范的软件工程实践,而是直接把构建错误喂给模型。
跨越边界的助手:理解LLM在基于项目的软件工程中的角色与使用模式
通过76名一年级学生的探索性研究,揭示LLM课程助手InnSpill.ai在项目式软件工程中的六种跨界角色与使用模式。
WhisperCatcher:揭秘 Android 应用中未经授权且加密的私有数据传输
提出 WhisperCatcher,融合流量语义、静态分析与动态插桩,检测 Android 应用中未经同意且加密传输的私有数据。
基于迁移学习的 JVM 应用可移植功耗建模
提出 LucRETius,以运行时事件为公共特征做迁移学习,把一台机器上的功耗模型快速移植到另一台机器。
AtPatch:通过热修复过度注意力调试 Transformer
提出 AtPatch,在推理时动态重分布注意力图,热修复 Transformer 的过度注意力,缓解后门与不公平。
GenDetect:面向模仿式 DeFi 攻击级联的泛化反应式检测
提出 GenDetect,将已观测 DeFi 攻击快速抽象为可泛化检测规则,遏制模仿式攻击级联。
在干净数据上训练却得到后门模型!一种针对代码编码器的投毒攻击
提出针对代码编码器的投毒攻击,使下游在干净数据上微调后仍得到带后门模型。
Panoptes:面向上下文感知二进制优化的 Profile 聚类框架
提出 Panoptes 框架,通过 Profile 聚类识别相似瓶颈的二进制,以促进上下文感知的二进制优化复用。
绿色架构重构:弥合代码效率与可持续设计之间的鸿沟
提出「绿色架构重构」愿景:用 LLM 逆向工程遗留架构,识别能耗反模式以指导可持续重构。
基于二元决策图的 T-wise 样本比较
提出基于 BDD 的度量来比较 t-wise 采样质量,并给出无计数原子集算法以支持高效确定性 BDD 编译。
BFix:面向二进制代码的自动化安全内存泄漏修复
发布 BFix 工件,支撑二进制代码中内存泄漏的自动化安全修复。
演化趋势、使用模式与隐藏陷阱:揭示真实世界中的 JavaScript 语言特性使用
大规模实证分析 12 个 JavaScript/TypeScript 可替代特性的演化趋势、使用模式与代码坏味。
DyMA-Fuzz:面向重托管单体固件模糊测试的动态直接内存访问抽象
通过运行时分析自动推断 DMA 内存访问模式,为重托管固件模糊测试自动注入 DMA 输入。
输入文法挖掘器有多好?一项实证研究
通过实证研究评估现有输入文法挖掘方法所挖掘文法的准确性,揭示其在测试输入生成中的实际效果。
VADA:面向LLM价值感知数据生成与对齐评估的多文化基准
提出VADA框架与多文化价值基准,用贝叶斯集成评估器自动测试LLM的文化价值对齐程度。
FlakeSync:自动修复异步 flaky 测试的工具
FlakeSync 自动识别异步 flaky 测试中的同步点并生成补丁,修复时序导致的随机失败。
PLATO:利用面向切面编程实现平台中立的汽车软件开发
提出 PLATO,将 AOP 融入 MDD,在生成的 C/C++ 代码层延迟平台实现,实现平台中立的汽车软件复用与自动生成。
RusyFuzz:面向 Rust 操作系统内核的未处理异常引导模糊测试
提出 RusyFuzz,以未处理异常(panic)为引导信号,针对 Rust 内核特有失败模式进行模糊测试。
Maven-Lockfile:历史 Java 发布版本的高完整性重建
为 Maven 引入 lockfile,冻结依赖及校验和,支持历史版本可重建与篡改检测。
TaCoS:面向任务恢复的生成式上下文摘要
提出 IDE 集成工具 TaCoS,用 LLM 从 IDE 与浏览器活动自动生成任务上下文摘要,助开发者中断后快速恢复任务。
量子软件工程101
系统介绍量子软件工程,涵盖量子软件需求、建模、编码、测试与调试及未来方向。
先过滤再微调:噪声标签下大型代码模型的鲁棒微调
针对大型代码模型微调中标签噪声未被充分探索的问题,提出先过滤噪声标签再微调的鲁棒微调思路。
Linux 内核开发模型中的瓶颈映射与缓解
通过实证研究刻画 Linux 内核开发工作流与瓶颈,并开发自动化工具缓解瓶颈。
使用 eBPF 与增量分析的高效构建依赖验证
提出 mkcheck2,结合 eBPF 系统调用追踪与增量分析高效验证构建依赖,检测开销最高降低 99.7%。
PTV:可扩展的Web库版本检测及其安全应用
提出PTV算法,从树森林中提取各库最独特结构以压缩特征,实现可扩展的Web库版本检测并服务安全漏洞发现。
不安全的成分?探索 Web 上打包 JavaScript 包的依赖更新模式
提出 Aletheia 从 JS bundle 识别包版本,并大规模测量 Web 依赖更新与漏洞情况。
刻画浏览器中 GPU 加速的 Web 应用
首个针对 5,954 个真实 WebGL 应用的实证研究,揭示其性能缺陷与不当开发实践根因。
面向自适应 IoT 应用部署的大语言模型端到端模型生成
提出 LAMDA,用 LLM 端到端生成并优化满足边缘设备精度与时延约束的 DNN。
Linux 内核并发缺陷的综合研究
系统研究 Linux 内核并发缺陷,揭示其与用户态应用不同的执行行为与挑战。
从众包知识自动生成 API 文档
提出 AutoDoc,利用微调稠密检索与 GPT-4o 从 Stack Overflow 自动生成准确、低冗余的 API 文档。
CoBrA:面向 PHP Web 应用的上下文敏感、分支敏感的污点式漏洞静态分析
提出上下文与分支敏感的静态分析 CoBrA,借助抽象域图与 stretch-relax 算法精确处理 PHP 动态特性,检测污点式漏洞。
从度量到模型:作为人类对齐代码可读性评估器的大语言模型
提出 CoReEval 基准,系统考察提示策略、解码参数与人格框架对 LLM 代码可读性评估与人类判断对齐度的影响。
打破字母顺序:重新思考代码审查中的文件排序
首个大规模调查表明代码审查中字母排序文件与认知不匹配,开发者呼吁依赖感知和可定制的排序工具。
SSAR:一种提升准确性与可扩展性的新型软件架构恢复方法
提出融合语义相似度与结构依赖的加权图及优化社区检测,实现更准确、可扩展的软件架构恢复。
基础模型软件工程(SE4FM)
提出SE4FM框架,用DataOps、ExperimentOps、EvalOps、FieldOps四支柱规范基础模型构建与运行。
Code4MeV2:面向研究的代码补全平台
提出开源模块化透明数据收集的 JetBrains 代码补全插件,支持可复现人机交互研究。
EMC:一种具有鲁棒性和可扩展性的语义增强恶意软件分类方法
提出语义增强的 PE 恶意软件分类框架 EMC,通过行为语义特征构建与特征净化提升鲁棒性和可扩展性。
META²V2V:揭示多车自动驾驶中相互感知下的行为偏差
提出 META²V2V 元变形测试框架,用 V2V 信息扰动和多目标搜索检测多车 ADS 的健全性与鲁棒性缺陷。
通过融合 JavaScript 与 WebAssembly 对 JavaScript 引擎进行模糊测试
提出首个能测试 JS 与 WebAssembly 交互的模糊测试器 Mad-Eye,发现 21 个未知漏洞。
GDSynth:通过高效图合成的图数据库测试框架
提出 GDSynth,将元模型变异与领域特定图模型合成结合,为图数据库自动生成多样测试数据并发现真实缺陷。
AnchorDiff:基于锚点节点切片的二进制开源软件版本识别方法
提出基于锚点节点切片的AnchorDiff,以提升非线性与微小更新下的二进制OSS版本识别准确率。
氛围工程(Vibe Engineering)
提出 Vibe Engineering 框架,以意图工程与实现工程两大支柱,把一次性提示式的 vibe coding 升级为可重复的多智能体 AI 辅助软件创建流程。
Polaris:LLVM 中 MIR 级混淆以实现高效且鲁棒的反编译抵抗
提出 LLVM MIR 级可组合混淆框架 Polaris,在保持语义下显著增强反编译抵抗且开销可接受。
锈蚀的类型:Rust 类型混淆缺陷的静态检测
提出首个面向 Rust 的静态分析工具 DeRust,通过跨过程数据流追踪检测不安全类型转换引发的类型混淆缺陷。
超越模糊匹配:面向混淆 Java 二进制的约束引导补丁存在性测试
提出约束引导的补丁存在性测试,利用方法约束消除混淆 Java 二进制中模糊摘要匹配的歧义。
验证混合整数规划求解器
提出可行性驱动的实例生成技术并实现工具 Flip,系统测试 MIP 求解器,发现 67 个真实缺陷。
Chatbot Dōjō:对话代理(chatbot)的自动化测试
提出黑盒端到端聊天机器人自动化测试 Web 平台 Chatbot Dōjō,含用户模拟器、测试 DSL 与探索器
跳出框框:通过记忆植入与推理实现应用间功能自动化测试
提出 InterDroid,通过多模态检索与记忆植入增强 LLM,实现跨应用 GUI 功能自动化测试并发现崩溃缺陷。
AI 制品的生命周期与质量属性的实证研究视角
从实证软件工程视角刻画 AI 制品生命周期并建模质量决定因素,进而提供决策支持工具。
对齐软件工程教育与实践中的 GenAI 使用:一个三层框架
基于多利益相关者调查揭示 GenAI 在软件工程教育与实践中的错位,并提出三层生态系统对齐框架。
在生成式人工智能时代重新审视软件架构与设计技能
提出在生成式AI时代理解并支持软件架构与设计技能的新研究方向。
PosEyeDOM:面向眼动追踪应用的基于 DOM 的轻量级 Copilot 建议位置记录器
PosEyeDOM:基于 DOM 的轻量级 Chrome 扩展,实时记录 Copilot 建议的位置、内容与时机,推断接受结果并导出眼动研究数据。
语义等价的代码变换如何影响面向代码的大语言模型上的成员推断?
系统研究语义等价代码变换对代码大模型成员推断的影响,发现变量重命名可把检测成功率降低约10%。
嵌入教科书的虚拟助教:以可验证引用回答 CS1 问题
提出基于 RAG 的虚拟助教,从课程教材中提取知识,为 CS1 问题提供可验证引用。
走向基于 ISO 的认知能力框架:通过知识与推理整合专化 LLM 以生成软件制品
提出基于 ISO 能力进阶与 AI 生命周期的知识与推理整合框架,减少 LLM 生成软件制品时对用户提示的依赖。
我们真正需要什么?通过精化识别最小充分的时序性质
提出性质精化关系,判定CTL性质间的语义蕴含,识别冗余性质,最高减少70%规范并加速验证30倍。
FastMCC:以自然语言短语作为替代建议的多假设代码补全
用自然语言短语表达多假设补全,避免生成多份完整代码,兼顾命中意图与低开销。
在代价发生前捕获许可证变更:利用 LLM 分析开源软件中的许可证演化
提出 LiTracker,用 LLM 自动追踪并分析开源项目许可证演化与兼容性风险。
使软件工程生成式 AI 智能体适配公司标准与开发者偏好
提出博士研究计划,研究让生成式 AI 智能体输出适配公司标准与开发者偏好的方法与工具,促进其在软件工程工作流中的集成。
BugHunter:一个通过检索增强实现缺陷感知 GUI 测试的自动化工具
提出缺陷感知的 GUI 测试工具 BugHunter,用 LLM 加检索增强从相似应用 bug 报告生成探索路径,提升缺陷检测效率。
配置敏感的 Linux 内核模糊测试
CSGO 联合模糊内核运行时参数与系统调用,以更深的覆盖率发现内核漏洞。
VDBFuzz:理解和检测向量数据库管理系统中的崩溃缺陷
提出首个面向向量数据库管理系统的模糊测试框架 VDBFuzz,通过边界值测试发现崩溃缺陷。
无遗忘学习:面向工业软件系统中故障定位模型的持续学习
提出 Ciallo 持续学习框架,通过语义提取与聚类样例回放缓解故障定位模型在系统测试迭代中的灾难性遗忘。
基于异构程序图引导的复杂类间结构 Java 优化编译器模糊测试
提出 InterFuzz,首个用异构程序图引导生成复杂类间结构测试用例的 Java 编译器模糊测试框架,发现 24 个新 bug。
迈向社区驱动可变性的系统化处理
针对去中心化生态中的社区驱动可变性,提出建模形式化、模型自动抽取与实现衍生品分析的系统化框架。
面向上下文无关属性的模糊测试
提出面向上下文无关属性的模糊测试,以发现由特定操作序列触发的软件缺陷。
CodeMapper:一种语言无关的跨提交代码区域映射方法
提出语言无关的 CodeMapper,通过 diff 分析、代码移动检测与相似度选择,将代码区域映射到另一提交中的对应区域。
用行为保持的复合指标评估基于LLM的测试重构
提出融合CodeBLEU、METEOR与ROUGE-L的复合指标CTSES,更准确地评估LLM对自动生成单元测试的重构质量。
以人为中心地将大型语言模型集成到软件工程任务中
从以人为本视角研究LLM工具如何影响软件实践者,并为工具改进与团队管理提供建议。
基于大语言模型的 Dockerfile 自动生成
提出 DRAFT,利用 LLM 迭代修复并优化 Dockerfile,实现自动生成可成功构建的镜像。
弥合理论与实践:伦理 AI 用户故事生成器——将伦理 AI 需求转化为伦理用户故事
提出 EAI-USG 工具,利用 LLM 与 RAG 自动将高层伦理 AI 需求转化为敏捷工作流中的伦理用户故事。
为新兴的 Compute-in-the-Network 范式构建汽车软件架构
主张将车载网络交换机模型作为一等软件架构实体,以支持网络内计算范式的汽车软件建模。
设计 Abandabot:开源依赖的废弃何时重要?
通过访谈识别依赖废弃影响性的四类情境因素,并构建基于 LLM 的分类器预测其是否重要。
迈向编程教育中的智能反馈系统:AI 导师、大语言模型与未来方向
探索将大语言模型嵌入自动编程评测系统,提供上下文感知、可信且契合学习目标的反馈。
微服务架构的自动化网络级故障注入测试
提出网络级故障注入测试自动化方法,突破现有服务级注入在微服务架构中的适用局限。
SE4AI:结构化 AI/ML 赋能软件开发过程
提出面向 AI/ML 赋能软件的结构化开发过程,以弥补现有实践零散、质量与兼容性不足的问题。
面向物理 GUI 交互测试的多模态机器人框架
提出完全非侵入的多模态机器人框架 RFNIT,用外部感知与机械执行对手机 GUI 做拟人化物理交互测试。
规模化软件架构数据:利用开源项目架构恢复的愿景
提出将架构恢复工具系统应用于开源仓库,以构建大规模架构数据集的愿景。
Plan4code:用思维链与本体规划代码变更
提出 Plan4Code,结合软件工程本体与思维链提示,让 LLM 驱动的代码变更更系统、可解释。
弥合最后差距:从协议逆向工程到模糊测试模板生成
提出 PRE2Fuzz,将协议逆向工程推断的格式规范自动转换为 PEACH 兼容 Pit 模板,打通逆向到模糊测试的最后一环。
RealityCraft:从自然语言指令自动合成扩展现实设备交互脚本
提出 RealityCraft,自动从自然语言指令合成 XR 多设备交互测试脚本,解决 XR 动作空间复杂与语义鸿沟问题。
修复 React 应用中的多余重渲染
针对 React 应用中的多余重渲染问题,提出修复或缓解技术。
演化人工生态系统:迈向将包容性遗传注入多智能体系统
提出将包含遗传与非遗传继承的包容性演化原则注入多智能体系统,以促进软件系统持续现代化。
编译器缺陷如何影响操作系统内核
首次实证研究编译器缺陷对操作系统内核的影响,分析 7 个内核中 494 个规避方案。
PromiseTune:揭示因果上有前景且可解释的配置调优
提出 PromiseTune,用因果纯化规则引导配置调优,缓解探索-利用权衡并提供可解释性。
GitHub 上的六百万(疑似)虚假星标:人气竞赛、垃圾信息与恶意软件的螺旋式增长
构建 StarScout 对 2019–2024 年 GitHub 全量元数据做纵向测量,揭示虚假星标在 2024 年激增,多用于推广钓鱼恶意仓库且长期无益。
闭合供应链:如何降低成为 SolarWinds、Log4j 或 XZ Utils 的风险
系统映射三种供应链攻击技术与十框架缓解任务,识别优先级与缺口。
通过解决可达性鸿沟来扩展安全测试
提出“可达性鸿沟”概念:自动化安全测试要触发系统内部功能,不仅需要输入,还需构造运行环境与配置。
CREME:通过层感知模型编辑增强代码大语言模型的鲁棒性
提出 CREME,定位鲁棒性敏感层并做轻量参数编辑,显著提升代码 LLM 对提示扰动的鲁棒性。
“也许我们需要更多示例:”开发者使用 GenAI 工具的个人与团队驱动因素
通过27个团队54名开发者的配对访谈,揭示GenAI工具使用频率差异的个人与团队驱动因素及“生产力压力悖论”。
FoundRoot:通过结构化深度思考迈向根因分析基础模型
提出RL增强的LLM基础模型FoundRoot,以结构化深度思考分解RCA推理,跨系统零样本RCA优于现有方法。
从软件失败中学习:某国家航天研究中心的案例研究
通过访谈揭示高可靠性组织中软件失败学习实践、障碍及对流程与工具的启示。
注意力剪枝:基于代理模拟退火的语言模型自动化公平性修复
提出 Attention Pruning,用代理模拟退火搜索注意力头剪枝参数,自动降低语言模型的性别偏见并兼顾效用。
SustainDiffusion:优化 Stable Diffusion 模型的社会与环境可持续性
提出基于搜索的 SustainDiffusion,在不微调模型下降低 SD 的性别/族裔偏见与能耗。
轻量胜于重型:基于语言诱导的性能需求自动量化
提出 LQPR,将性能需求量化转化为分类问题,并用轻量语言诱导匹配实现高效自动量化。
ConfuGuard:利用元数据准确且大规模地检测活跃与隐蔽的包混淆攻击
提出 ConfuGuard,利用包元数据区分良性包,将包混淆攻击检测误报率从80%降至28%,并扩展至7个包注册表。
何为伦理来源的代码生成?
提出“伦理来源代码生成”概念,通过文献综述与从业者调查构建 11 维分类体系,呼吁关注伦理问题。
因果还是相关?关于代码坏味道对类变更倾向与故障倾向影响的队列研究
将队列研究引入软件仓库分析,检验代码坏味道对类变更与故障倾向的因果效应。
“游戏规则改变者”还是“过度热情的酒鬼熟人”?盲人与低视力软件专业人员在职场中使用生成式 AI
通过对39名盲/低视力软件专业人员的访谈,揭示生成式AI在工作中的收益与更高风险。
与 AI 共同演进:开发者日志的纵向分析
用两年遥测与问卷揭示 AI 编程助手对开发者日常工作流的长期实际影响。
超越采纳:开源社区行为准则的演化与影响研究
基于 GitHub 大规模数据揭示开源社区行为准则的演化模式及其对社区参与的影响。
弱程序员勿扰,LLM 欢迎!AI 时代的调查筛选
通过分析被筛除的开发者问卷并测试五种LLM,揭示传统编程能力筛选易误伤真实开发者且难防LLM作弊,建议改进招募策略。
FairRF:面向单一与交叉软件公平性的多目标搜索
提出 FairRF,用多目标进化搜索联合优化随机森林的超参数与数据变异,返回 Pareto 最优解集供权衡公平性与有效性。
“你能感受到 vibes 吗?”:新手程序员参与 vibe coding 的探索性研究
通过一日教育黑客松的观察与访谈,揭示 vibe coding 对新手在原型速度、协作与学习上的收益与局限。
在非正式空间中学习编程:以情绪为视角理解 r/learnprogramming 上新手程序员的困境
通过标注 r/learnprogramming 的 1500 条帖子,刻画新手在非正式学习中的情绪体验、诱因与五类支持需求。
利用社会科学构念与理论探索生成式AI中的社会偏见
主张软件工程研究应引入社会科学理论与构念,以理解、解释并缓解生成式AI中的社会偏见。
匿名、无主持、在线点对点编程辅导对话的实证研究
对108场匿名无主持P2P编程辅导对话进行混合分析,揭示其对话动态与满意度,为可扩展同伴辅导系统设计提供依据。
提升以太坊矿工的 Gas 收入
指出以太坊矿工需联合选择交易并优化排序以最大化 gas 收入,形成组合优化问题。
“我需要学习更好的搜索策略来应对隐私政策法律。”——调查软件开发者在使用隐私问题相关资源时的行为
通过出声思维与访谈研究 30 名开发者,发现个人知识、网络资源与 AI 助手在支持隐私合规开发上均存在明显不足。
核心贡献者退出如何影响开源项目活动?一项准实验研究
通过大规模准实验量化核心贡献者退出对 GitHub 项目 PR 吞吐、接受率与合并时间的影响。
TARIPlay:基于回放视频中交互区域检测的 AR 应用测试框架
提出 TARIPlay,通过分析 AR 回放视频检测、跟踪并筛选可交互区域,实现更精确的自动化 AR 应用测试。
从小处重建人工智能:迈向民主化智能之路
研究提示形式与认知启发推理框架,提升小语言模型推理能力,推动AI能力民主化。
嘿,ChatGPT,看看我的工作:在需求工程教育中使用对话式 AI
报告将 ChatGPT 系统引入软件工程课程需求定义阶段的教学实践、目标与经验。
Drivora:一个统一且可扩展的基于搜索的自动驾驶测试基础设施
提出统一可扩展的 Drivora 基础设施,解耦测试引擎、场景执行与 ADS 集成,支持基于搜索的自动驾驶测试复用与扩展。
LogFold:利用结构化 token 与混合编码压缩日志
提出 LogFold,通过挖掘结构化 token 的冗余模式并采用类型感知混合编码,显著提升日志压缩率。
过热难控:温度参数对用于编程作业作弊的 AI 生成代码的影响
通过近万份生成程序,评估 LLM 温度参数对编程作业作弊代码可提交性的影响。
LikeThis!:赋能应用用户提交 UI 改进建议而非抱怨
提出基于生成式 AI 的 LikeThis!,让用户用截图和评论生成多个 UI 改进方案,提升反馈可理解性与可执行性。
基于激活驱动训练的 DNN 模块化
提出 MODA,一种激活驱动的模块化训练方法,使 DNN 模块化无需额外微调且大幅减少权重与重叠。
实践者对移动应用无障碍性的看法:实践与挑战
通过全球110名移动开发者的混合方法调查,揭示iOS/Android无障碍实践差异及经验相关挑战。
实证软件工程中内部效度与外部效度之见:十年后与未来
复现十年前ICSE调查,发现实证软件工程界对效度权衡与复现仍存分歧,呼吁更精细评审标准。
节能软件开发:对 Stack Overflow 的多维实证分析
通过分析 1193 个 Stack Overflow 能耗问题,揭示开发者对节能软件开发的多层级关注与实践挑战。
从收益到压力:用生成式 AI 采纳建模开发者职业倦怠
基于 442 名开发者的混合方法实证研究,揭示生成式 AI 采纳通过抬高工作需求而加剧倦怠,工作资源与正面认知可缓解该效应。
与AI一同学习编程:德国中学生的批判性思维、AI伦理与性别化模式
通过德国中学生实证研究揭示AI辅助编程中的伦理悖论与性别差异,倡导结合代码实物的批判性AI素养教育。
培养下一代太空软件工程师的经验教训
报告国际博士学校 SPACERAISE 的组织经验,聚焦太空机器人、数字孪生与航空航天 AI 培训。
探索在线计算教育中的探究社区:学生感知与生成式 AI 的机遇
基于 CoI 框架调查 86 名在线计算课程学生,揭示他们对生成式 AI 支持学习的期待与担忧。
EXEMPLIFY-SEE:一种基于示例学习的软件工程教育结构化方法与门户
提出 EXEMPLIFY-SEE,通过可定制工作流与示例库支持教师结构化设计基于示例学习的教案。
映射 YouTube 上的软件工程教育内容
设计 YouTube 视频自动检索与相关性评分流水线,并两次映射软件工程教育内容。
PerspectiveCoach:探索用 LLM 支持开发者反思
提出 LLM 驱动的对话工具 PerspectiveCoach,通过结构化换位思考练习引导开发者反思设计决策对边缘化用户的影响。
从字里行间解读:基于开发者提示中隐式情感的可扩展用户反馈
提出用开发者提示词的情感分析挖掘隐式满意度信号,以可扩展方式补充传统反馈渠道。
考察教育环境中的生产力
通过访谈与问卷分析软件工程毕业设计项目中师生对生产力的多维认知,并对照 SPACE 框架。
将可持续性融入软件工程课程:一个案例研究
通过案例研究提出在软件工程课程中嵌入可持续性教育的协作流程与实践步骤。
代码的碰撞:从同伴间复制到入门编程作业中的 AI 生成
通过两届入门 Python 作业的代码相似性与语法错误分析,揭示从同伴复制到趋近 AI 生成解的转变。
以生态系统为中心的综合项目:在软件工程教育中模拟科技公司的经验
报告 UNSW 以软件生态系统为中心重构毕业设计,让多团队共建微服务系统以模拟产业协作。
考试在评估 Capstone 课程中学生学习效果中的有效性
对比两门加入笔试的课程,揭示生成式 AI 导致的表层编码,并论证考试可补充代码库指标。
学生在尝试为开源软件项目做贡献时遇到哪些障碍?
通过质性分析学生参与开源项目的经历,识别贡献障碍并发现“导师指导冲突”和“沟通渠道模糊”两个新障碍。
从前有一个团队:探究LLM驱动的软件团队组建与任务分配中的偏见
揭示LLM在软件团队组建与任务分配中可能再现偏见,并指出现有研究孤立考察敏感属性的不足。
从挣扎到成功:揭示学生在毕业设计项目中的情绪历程
通过14周Scrum毕业设计日记,揭示学生情绪触发因素与阶段差异,提出情绪感知教学环境设计。
面向软件工程教育的教学控制与课程约束 AI 导师:经验报告
设计并试点评估 RockStartIT Tutor,一个基于 GPT-4、受教学法和课程约束的编程与计算思维 AI 导师。
揭密软件测试中的知识隐藏:来自从业者的洞见
通过调查102名从业者,揭示软件测试中知识隐藏行为的工作条件与情境性,并指出其值得进一步研究。
放大器还是均衡器?LLM 在基于项目的软件工程学习中演进的纵向研究
两年纵向研究显示,最新 LLM 在软件工程项目式学习中既是提升弱者的均衡器,也是拉大差距的放大器。
通用性还不够:基于知识级协作的零标签跨系统日志异常检测
提出 GeneralLog,通过 LLM 与小模型按知识级动态路由,实现零标签跨系统日志异常检测。
但,你曾将模型部署到生产环境吗?在数据科学课程中教授机器学习运维的经验
总结四轮MLOps课程教学实践,提炼有效方法、学生反馈与挑战,并提出普及MLOps教育的策略。
为什么学生离开 LMS:软件工程课程中的执行功能需求与自我调节学习
访谈七名有执行功能困难的工程学生,揭示 LMS 支持不足并提出 EF–SRL–LMS 对齐框架与实践清单。
超越提示词:新手在代码摘要任务中如何与 AI 互动
首个眼动追踪研究,揭示生成式 AI 辅助如何改变新手程序员在代码摘要时的注意力分配与参与深度。
评估可持续性-质量模型:一项在教育领域的多年实证研究
通过63个硕士项目检验SQ模型,报告275项关注点分类准确率达88%,证明新手可可靠使用。
面向软件架构的公平优先设计思维
提出公平优先的设计思维方法,用于在软件架构设计中处理公平性问题,并通过研究生课程实践总结启示。
FORGET-SE:一个用于研究软件工程知识追踪中记忆衰减与干扰的受控数据集
发布首个区分记忆衰减与干扰的受控软件工程知识追踪数据集,并揭示DKT在干扰下性能下降。
挑战与使能因素:软件开发团队中残障人士的远程工作
通过混合方法揭示残障开发者在远程软件团队中的挑战与团队认知差距,并提出改进方向。
当情绪至关重要:混合工作模式下顶点项目回顾会议中基于语音的情绪检测
该研究用语音情绪识别分析混合、线下与线上Scrum回顾会议,发现情绪分布与团队自评绩效相关。
开发者的盲点:设计系统以促进利益相关者理解伦理品质
揭示开发者盲点,提出将抽象伦理价值操作化为可观察系统特性,让利益相关者能理解和评估伦理品质。
在软件工程教育智能辅导系统中利用自适应游戏化
为MEITREX智能辅导系统设计并实现基于HEXAD玩家类型、课程进度与能力水平的自适应游戏化方案。
微服务架构中智能漏洞管理的方法论框架
提出通过挖掘 GitHub issue 并用 NLP 对齐 CVE/CWE/OWASP 的微服务漏洞管理框架。
IntelliRadar:一个从网络情报中精准定位恶意软件包的综合平台
提出 IntelliRadar 平台,从社交媒体、开发者论坛等非结构化网络情报中识别恶意软件包,弥补现有数据库的延迟与覆盖不足。
在缓解 Java 项目技术滞后时最小化破坏性变更与冗余
提出 DepUpdater,自动升级 Java 依赖以最小化技术滞后,同时避免不兼容与冗余依赖。
Next Level:面向软件团队演化的基于绩效指标的成熟度模型(构建中)
提出正在构建的 Next Level 成熟度模型,以绩效指标支持按需软件开发团队的可度量演化。
用数字孪生与 AI 智能体设计系统
提出面向数字孪生与 AI 智能体融合系统的领域驱动架构方法,并给出应对同步、扩展与互操作的设计模式。
OSS4SG 与传统开源软件的社区与编码模式实证分析
通过 1,039 个 GitHub 仓库的实证比较,揭示 OSS4SG 与传统 OSS 在社区黏性、参与节奏和贡献模式上的差异。
Sapling:量化和测量 RISC-V 软件生态系统的成熟度
提出 Sapling 自动化评估系统,从五类场景、三十个组件和六个维度量化 RISC-V 软件生态成熟度。
扩展现实中的系统理解与源代码操作
提出以城市隐喻构建扩展现实可视化,按类原型生成建筑,辅助程序理解与源码操作。
嵌入式软件维护与演化过程的实证研究
通过系统性文献综述、行业调查与工具化流程设计,揭示嵌入式软件维护演化实践的碎片化问题并给出集成方案。
Ethicode City:游戏化软件工程伦理教育
提出城市建造游戏 Ethicode City,将软件工程伦理困境游戏化,初步评估显示能提升学生伦理推理能力。
评价我的网页设计?用 LLM 预测生成式 Web UI 原型的人类主观评分
用 LLM 给 84 个 AI 生成的 Web UI 原型打分,并与 39 位 HCI 专家评分对比,发现 RMI 最接近人类而 GPT-4o 表现不佳。
软件基础设施态度量表(SIAS):一种测量专业人员对技术与社会技术基础设施态度的问卷工具
开发并验证SIAS量表,用于测量软件专业人员对技术与社会技术基础设施的态度。
保持连接:性别同质性及其在开源软件开发者留存中的作用
分析 160 万开发者 14 年协作网络,揭示性别同质性对开源留存的影响,女性间连接显著降低退出风险。
防止智慧人本生态系统失效
提出 SHE 健康度与失效定义,并用 Transformer 自编码器预测、预防失效及构建数字孪生多智能体架构。
“让我们的生活少些单调”或“只是把事勾掉”:一项关于 Toil 的探索性多方法研究
通过灰色文献与访谈,揭示从业者对 SRE 中 toil 的定义扩展、负面影响及减少 toil 的阻力。
转移维护负担:迈向数据驱动的依赖管理
提出数据驱动的依赖管理方法,聚合细粒度兼容性与安全信息并转化为可优化解析约束,以减轻开发者维护负担。
探究治理如何塑造开源软件项目的健康度
用纵向混合方法研究开源治理的采纳、文档化与影响,揭示治理是 OSS 可持续性的社会技术基础。
遗留 COBOL 系统的能耗:一个被遗忘的方向与 COBJoules 工具
提出并实现 COBJoules,首个用于测量和分析 COBOL 遗留系统能耗的工具之一。
预测以人为中心的智能生态系统中的失效
指出智慧城市等以人为中心生态系统的整体失效无法靠测试床完全预防,需转向失效预测。
面向开放世界游戏探索性试玩的基于策略框架
提出基于领域策略的 xPloiT 探索性试玩框架,结构化记录 playtraces,为类人智能体试玩建模提供数据。
默认绿色 AI:面向软件工程中 LLM 的能耗降低技术
通过降低能耗报告门槛、自动化模型压缩并给出选型指南,让 LLM 优化技术更易用、更节能。
促进学术界与产业界研究合作的智能方法
提出融合系统文献综述、开放创新项目与NLP/LLM智能方案的产学研合作促进方法。
Metronome:面向 Serverless 函数的差异化延迟调度
提出 Metronome,用在线随机森林预测执行时间,为 Serverless 函数实现差异化延迟调度。
CRUDinfer:通过黑盒测试自动推断 REST API 的 CRUD 语义
提出 CRUDinfer,通过黑盒测试自动推断 REST API 的 CRUD 操作语义。
持续集成实践的可信度
研究持续集成实践的可信度,刻画不可信表现并提出维持开发者信心的方案。
长期协作软件代码库中的知识集中化动态
提出博士项目计划,用新度量、可视化工具和模式分类研究大型长期 FLOSS 项目中的知识集中化演化与缓解。
一种基于站点可靠性工程实践的事件管理方法:支持专有软件生态系统中的治理
提出 SIA 方法,将 SRE 事件管理作为专有软件生态系统的治理机制,提升可追溯性与知识转移。
多智能体路径规划算法的蜕变模糊测试
提出蜕变模糊测试方法,系统检测多智能体路径规划求解器的完备性与解质量缺陷。
STEM-EF:基于情绪因素的 Scrum 团队协作效能模型
提出融合情绪因素的 Scrum 团队效能评估模型 STEM-EF,并完成内容效度与可用性验证。
运行时可信任的需求冲突消解
研究如何在运行时管理相互冲突的需求,以维护用户对自主系统的信任。
PriviSense:一个基于 Frida 的 Android 多传感器欺骗框架
提出基于 Frida 的端侧工具,可在已 root Android 上运行时欺骗传感器与系统信号,支持可复现的上下文相关应用测试。
如何(不)分析软件工程实验:从反模式到解决方案
本教程总结软件工程实验数据分析中的常见反模式与陷阱,并基于25年经验给出提升结果可靠性的实践指南。
面向 Simulink 高效代码生成的硬件特定指令合成
提出 Amica,利用 Simulink 模型语义合成硬件特定指令,显著提升生成代码性能并减小汇编体积。
OctopusGuard:K 线增强的多模态 LLM 代币诈骗检测器
提出 OctopusGuard,用 K 线数据增强多模态 LLM,检测 DeFi 中行为驱动的代币诈骗。
设计即主权:面向 AI 与区块链赋能系统的参考架构
提出把数字主权作为一等架构属性的参考架构,整合自主身份、区块链可信审计、主权数据治理与受控生成式 AI。
MazeBreaker:面向 LLM 安全防御动态越狱的多智能体强化学习
提出 MazeBreaker,用多智能体强化学习从攻击反馈中动态学习,实现无需参考预言机的 LLM 越狱。
基于模型的开发中的知识产权保护——Deltachain 方法
提出 Deltachain,将模型增量表示与加密访问控制结合,在不可信平台上安全共享模型并保护知识产权。
ModularEvo:通过神经网络模块化与组合演化多任务模型
借鉴软件工程模块化思想,将多任务模型分解为任务专属模块按需部署并协同演化,兼顾性能与推理效率。
面向农业部署中对抗性边缘网络的 MLOps 工程
提出面向竞争型农业边缘网络的 MLOps 架构,以自适应差分隐私、时间窗聚合和边缘数据校验平衡模型效用与隐私。
Agentic AI 对软件项目管理的变革性影响
提出“agentic SPM”愿景,计划以实践者调研、原型与案例研究验证 agentic 项目助理。
FrameShift:在不破坏输入的前提下调整模糊测试输入的大小
提出轻量技术,通过检测并利用输入中的关系字段,在变异时自动调整大小、保持输入结构,避免破坏性的 frameshift 变异。
面向非专家自动驾驶机器学习教学的模块化工作坊架构
提出模块化分布式架构,显式拆分 ML 流水线各阶段并服务化,使非专家学生一次工作坊内完成采集、训练与部署。
TenderChat with Dynamic RAG:面向澳大利亚政府招标分析的提示自适应 RAG 框架
提出 TenderChat,一个结合查询增强与动态提示的对话式 RAG 框架,用于澳大利亚政府招标信息的检索与解释。
迈向自自适应与去中心化智能软件系统:联邦学习视角
提出从联邦学习视角构建可自组织、自适应、去中心化且保护隐私的智能软件系统的研究愿景。
为缓解开发者流失而增加一名额外代码评审者的成本与收益:基于评审者推荐器的研究
针对知识流失风险高的 PR 提出增加额外评审者的推荐器,量化其降低流失风险与增加评审工作量之间的权衡。
理解软件工程培训中视频与游戏化结合的看法
通过调查学生与从业者,发现二者支持将游戏化与视频培训结合,为设计游戏化培训提供依据。
软件工程中的观点采择:其与团队绩效关系的研究
访谈33名软件从业者,发现观点采择通过提升动机、包容与建设性任务冲突来影响SE团队绩效。
从共情到工程:一个教学框架及其真实的移动健康(mHealth)实现
提出贯穿软件过程的无障碍设计教学框架与可复用工具,并在真实 mHealth 课程中实践。
面向高效软件包维护:跨四个 Linux 发行版的补丁共享实证研究
实证研究四个 Linux 发行版同源软件包的补丁共享与传播延迟,并验证跨发行版补丁推荐潜力。
开源项目中开发者不活跃的早期预测
提出用 GitHub 贡献数据对开发者不活跃进行时间预测,可在 7 天窗口前提前预警 65–75%。
ARISE:面向老年人健康的边缘设备实时多模态 AI
提出在边缘设备上全本地运行的多模态老年人运动系统,结合姿态估计与语音对话实现实时指导。
One Size Does Fit All:内核辅助的共享库细粒度去膨胀与布局随机化
提出内核辅助的共享库细粒度去膨胀与布局随机化方法,在复用前提下缓解代码膨胀。
BTreeFuzz:基于行为树的 ROS 程序模糊测试器增强反馈机制
提出基于行为树的反馈机制,提升 ROS 程序模糊测试器对机器人状态的区分能力与独特崩溃检测效果。
FlowScope:面向微服务故障排查的、带方法级延迟估计的非侵入式分布式追踪
提出 FlowScope,通过方法级延迟分布估计与多约束迭代重建,将非侵入式分布式追踪准确率提升 51%。
定性数据分析与理论发展的技术简报
介绍用社会技术扎根理论(STGT)开展系统定性数据分析与理论构建的实操方法。
通过真实世界漏洞利用理解与刻画智能网联汽车漏洞
首个大规模实证研究,基于649个真实可利用漏洞刻画智能网联汽车漏洞并修正现有分类。
揭秘 CVE 生态系统:社区感知的影响与问题
通过主题分析与社区调查,揭示 CVE 生态系统对各方参与者的负面影响及内在问题,并提出改进建议。
留下还是离开?工作满意度、嵌入性及前因如何预测软件专业人员的离职意向
通过224名软件专业人员的调查与PLS-SEM,发现工作满意度与工作嵌入性负向预测离职意向,组织公平等是关键前因。
软件工程教育中的本地部署 Kubernetes:一份经验报告
报告在软件工程教育中采用本地部署 Kubernetes 的经验,以应对云方案的隐私、成本与供应商依赖问题。
软件架构教育二十年:现状、挑战与未来方向
系统梳理2005—2025年45项研究,总结软件架构教育现状、挑战与未来方向。
生成式 AI 工具在软件工程教育中的作用与影响
通过两校130名本科生调查,揭示生成式AI在软件工程教育中的使用、收益、挑战与伦理诉求。
软件工程职位招聘广告中有什么?
通过对100份招聘广告进行主题分析,揭示软件工程职位对非技术能力与社会组织契合的期望。
GenEDIt:面向软件工程教育的上下文感知公平、多样与包容原则集成工具
提出 LLM 驱动的 EDI 集成工具 GenEDIt,帮助软件工程教师在不改变教学目标的前提下将 EDI 融入教学材料。
“比起课程,我更看重 LeetCode”:CS 学生对技术面试的准备策略与看法
访谈20名CS学生与应届生,揭示其技术面试准备策略、与课程脱节及对面试形式的诉求。
TechnoHealth:面向精准医疗异构可穿戴数据可复现研究的模块化框架
提出模块化框架 TechnoHealth,用混合数据模型统一异构可穿戴数据,支持可复现的精准医疗分析与模型训练。
通过专利看网络欺凌安全工程:趋势、解决方案范式与社会影响
基于192个专利族,揭示网络欺凌安全工程由AI检测与审核主导,报告、隐私、伦理及高风险群体覆盖不足。
隐形的负担:揭示软件工程中神经多样性女性面临的挑战
系统梳理软件工程中神经多样性女性在认知、社会、组织、结构与职业发展方面的挑战,并提出融合InclusiveMag与GenderMag的混合方法。
Leveling Up:面向自闭症高中生的游戏编程夏令营经验与证据驱动升级
经验报告:为期3周在线游戏开发夏令营如何帮助23名自闭症高中生学习编程、沟通与团队协作,并总结改进建议。
论大型编程课程中的趣味教学
提出十种面向大型编程课程的身体趣味活动,并报告其连续三年教学与访谈研究结果。
以代码连接代际:GABI——面向老年人包容性金融软件的社区驱动框架
提出并验证GABI指南,以证据驱动方式指导面向老年人的可访问、安全网银界面设计。
谁在教授人工智能伦理?理解计算项目中人工智能伦理教育的差距
调查美国91名计算学科教师,揭示AI伦理融入课程的态度、障碍与促进因素。
超越二元:跨性别与非二元软件工程学生的动机、挑战与策略
通过访谈揭示跨性别与非二元软件工程学生的动机、挑战,并提出包容性支持策略。
他们叫她“小姐”而称他“教授”:IT/SE教育中女性教学支持人员的亲历体验
通过15名IT/SE高教女性教学支持人员的亲历体验,揭示教学权威获得、抵抗与维持中的性别与交叉性权力机制。
谨慎滚动:老年人对社交媒体伦理问题的看法
通过访谈揭示老年人对社交媒体隐私、错误信息、成瘾与审查的伦理担忧及透明政策诉求。
软件工程教育中的团队合作:跨课程项目的团队动态与挑战探究
通过三门口径课程205名学生的调查,量化团队合作挑战的频率、共现与影响,并分析团队构成作用。
将心理健康、福祉与可持续性融入软件工程教育
提出将心理健康、福祉与可持续性融入软件工程教育的项目式教学与课堂干预,并报告60名学生的积极反思。
从包容到行动:盟友关系在软件团队中对女性的作用
访谈揭示软件团队中女性对盟友关系的理解、收益与挑战,并提出组织建议。
从用户画像到编程:中学基于设计思维的编程教育中的性别特定效应
10周设计思维编程课显示女生在自我效能、兴趣和幸福感上提升显著,技术任务虽令男生略感枯燥但整体受益。
在软件工程团队项目课程中使用同伴评价与团队契约
在两门软件工程团队项目课程中实证同伴评价与团队契约的效果,发现团队契约利于早期团队建设,同伴评价仅在小团队中更有效。
从大科技到政治大舞台:用户对科技公司政治化的论述
基于4.4万条Reddit帖子,结合LLM、聚类与时间分析,揭示公众对科技公司政治化的主题、情感与演变。
电子游戏开发中的伦理问题导航:从业者的洞见
通过访谈13国31名游戏从业者,揭示其对伦理问题的认知、应对障碍与改进策略。
连接教育与实践:在软件工程工作室中使用反思性实践十年的经验教训
总结十年在本科软件工程 capstone 课程中嵌入结构化反思的经验,指出真实赞助项目与多元形成性反馈是关键支撑。
点击、滚动、同意:揭示澳大利亚的隐私知识危机
通过对澳大利亚人的全国代表性调查,提出“碎片化意识”概念与隐私用户画像,指导隐私感知系统设计。
挑战敏捷:大规模场景下经验方法裁剪的验证
提出一个灵活、自适应、证据驱动的框架,用于在大规模企业场景中裁剪与实证验证敏捷技术。
在软件工程中教授情绪意识:来自专业培训项目的证据
该研究通过专业培训项目实证发现,情绪意识工具支持个人反思,但新团队中成员不愿分享情绪,阻碍团队协作。
北欧软件行业中的女性职业路径:一项通过性别转换人设(gender-switched personas)进行的叙事分析
以性别转换人设与叙事分析,考察北欧软件行业中女性的职业发展路径与障碍。
旨在教授或实践技术债务管理的游戏:一项系统映射研究
系统映射用于技术债务管理学习与实践的游戏,识别相关游戏并梳理现状。
焦虑感知的需求工程:一篇愿景论文
提出焦虑感知需求工程理论框架,帮助软件工程师预防系统设计中的焦虑与情感伤害。
从协作到团队效能:涌现状态在分布式与动态软件团队中的作用
基于组织心理学与软件工程研究,提出面向分布式动态软件团队的协作社会技术构念模型。
在软件工程团队式学习中应用神经包容性敏捷实践
将34项神经包容性敏捷建议应用于本科IT课程学生团队,通过行动研究评估其可行性、收益与挑战。
智慧城市中的系统之系统(SoS)治理:一项揭示全球南方研究缺口的三级综述
通过三级综述系统整合智慧城市 SoS 治理的二次文献,揭示全球南方语境下的研究缺口与地理偏倚。
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026 引用 3
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026 引用 3
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026 引用 2
ICSE Proceedings of the IEEE/ACM 48th International Conference on Software Engineering 2026 引用 2
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026 引用 1
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026 引用 1
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026 引用 1
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026 引用 1
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026 引用 1
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering: Future of Software Engineering 2026
ICSE Proceedings of the IEEE/ACM 48th International Conference on Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering 2026
ICSE Proceedings of the 2026 IEEE/ACM 48th International Conference on Software Engineering 2026
2025250 篇 · 2025 IEEE/ACM 47th International Conference on Software Engineering (ICSE)
神经符号模块化精化类型推断
提出神经符号 agent LHC,用 LLM 自动生成整包精化类型标注并由 LiquidHaskell 验证,大幅降低形式验证标注成本。
SpecGen:基于大语言模型的形式化程序规约自动生成
SpecGen 利用 LLM 对话式生成并变异筛选可验证的形式化程序规约,在 385 个程序上成功生成 279 个可验证规约。
基于LLM资源导向意图推断的静态资源泄漏检测增强
提出InferROI,用LLM推断资源获取/释放/可达性验证意图,再结合两阶段静态分析提升资源泄漏检测。
Rango:面向自动化软件验证的自适应检索增强证明
提出 Rango,用检索增强的微调 LLM 在 Coq 中自动识别相关前提与相似证明,实现全自动证明合成。
LLM 辅助的内存安全
提出 MSA 框架,用 LLM 结合轻量静态分析将 C 代码移植到 CheckedC,自动推断注解并重构代码。
3DGen:AI 辅助生成可证明正确的二进制格式解析器
提出 3DGen,用 AI 智能体将 RFC 与示例转成 3D 规约,并综合出可证明正确的 C 解析器。
规划大型语言模型以静态检测代码片段中的运行时错误
提出 Orca,让 LLM 自主规划沿控制流图预测执行代码片段,从而静态检测运行时错误。
面向安全最小化的大语言模型
提出 SafeMin,将 LLM 与 SMT 求解器协同用于不可行字符串约束系统的安全最小化与 MUS 计算。
LLM 辅助的安全协议验证自动建模
提出用 LLM 分阶段自动从自然语言文档生成安全协议的符号模型,并用可证可靠的模型变换保证正确性。
迈向 SMT 辅助的证明导向编程的神经合成
构建 60 万行 F* 程序与证明数据集,并探索用微调小模型和检索增强进行类型导向的程序与证明合成。
SpecRover:利用 LLM 进行代码意图提取
提出 SpecRover,一种基于 LLM 智能体的迭代规约推断与代码搜索工作流,显著提升自动程序修复效果并降低成本。
基于LLM的智能体方法用于自动化代码设计问题定位
提出多智能体框架LOCALIZEAGENT,利用LLM将程序分析结果转为自然语言摘要并定位代码设计问题。
RustAssistant:使用LLM修复Rust代码中的编译错误
用提示技术与LLM-编译器迭代自动修复Rust编译错误,峰值准确率约74%。
ROCODE:将回溯机制与程序分析集成到大型语言模型中以用于代码生成
提出 Rocode,将程序分析增量检错与回溯重生成融入 LLM 代码生成,提前消除错误并提升通过率、降低开销。
面向数据科学代码的知识增强程序修复
提出DSrepair,用知识图谱RAG增强LLM修复数据科学代码缺陷,显著提升修复率并减少token消耗。
代码语言模型的漏洞检测:我们还差多远?
提出 Primevul 数据集与真实评测,揭示现有基准严重高估代码 LMs 的漏洞检测能力。
大型语言模型作为配置验证器
首次系统评估 LLM 做配置验证的可行性与有效性,提出基于 few-shot 提示与输出检查的通用框架 Ciri。
利用大型语言模型检测 NPM 恶意包
提出 SocketAI 工作流,用 GPT-3/4 检测 npm 恶意包,并结合静态分析预筛提升精度并降低成本。
Fairquant:深度神经网络公平性的认证与量化
用抽象与公平性引导的迭代精化,对深度神经网络进行个体公平性的形式化认证,并能量化可证明公平个体的比例。
对齐基于 LLM 的程序修复的目标
提出 D4C 提示框架,通过对齐 LLM 训练目标并直接调试整个程序来修复缺陷,大幅减少采样。
LLM 是否被正确地集成到软件系统中?
对100个集成LLM与RAG的开源应用开展实证研究,归纳18种集成缺陷模式并提出系统性修复指南。
弥合差距:关于AI驱动的IDE内漏洞检测与修复实际可用性的用户研究
首个针对专业开发者在真实项目中使用的IDE集成AI漏洞检测与修复工具的用户研究,发现其因高误报率与不可用修复而不适合实际应用。
你的修复就是我的漏洞利用:利用大语言模型实现全面的深度学习库 API 模糊测试
提出 DFuzz,让 LLM 从 API 源码检查中推理边界输入并生成测试程序,实现 DL 库 API 的全面模糊测试。
exLong:使用大语言模型生成异常行为测试
首个自动生成异常行为测试的框架,通过指令微调 CodeLlama 并嵌入异常路径推理,超越现有模型与工具。
云规模授权的形式化验证
用 Dafny 重写并形式化验证 AWS 授权引擎,保持行为兼容并成功部署,性能提升三倍。
面向深度神经网络性质修复的补丁合成
提出 Patchpro,通过构造补丁模块并结合形式验证,实现对 DNN 局部鲁棒性的可证明性质级修复。
QEDCartographer:使用无奖励强化学习自动化形式验证
提出结合监督与无奖励强化学习的证明合成工具 QEDCartographer,利用证明分支结构提升 Coq 定理自动证明率。
HumanEvo:一个演化感知的基准,用于更真实地评估仓库级代码生成
提出演化感知的仓库级代码生成基准 HumanEvo,揭示忽略软件演化的评测会高估 LLM 性能 10.0%–61.1%。
TIGER:面向实用 Python 类型推断的“先生成后排序”框架
提出两阶段“先生成后排序”框架,显著提升 Python 中用户定义类型与未见类型的推断准确率。
使用分层与可解释分类改进深度神经网络中的故障检测与诊断
提出 DEFault,结合动态/静态特征、分层分类与 SHAP 可解释性,检测并诊断 DNN 程序故障。
Gpass:面向 Coq 的目标自适应神经定理证明器,用于自动化形式验证
提出基于 Coq 的目标自适应神经定理证明器 Gpass,显著提升自动形式验证中的定理证明性能。
通过路径条件合成对深度学习库进行轻量级混合执行测试
提出首个面向深度学习库的轻量级混合执行测试技术,用归纳合成近似路径条件以提升分支覆盖与缺陷检测。
Treefix:利用前缀树实现代码执行
提出 Treefix,用 LLM 迭代构造前缀树,使代码片段尽可能被执行。
类型的力量:探索类型检查对动态类型语言中神经缺陷检测的影响
揭示动态类型语言缺陷数据集中类型相关缺陷占比,并证明神经缺陷检测器与类型检查结合可提升检测效果。
RepairAgent:面向程序修复的自主 LLM 智能体
首个基于 LLM 自主智能体的程序修复方法,在 Defects4J 上自主修复 164 个缺陷。
结合微调与基于LLM的智能体实现直观的智能合约审计与理由生成
提出iAudit,将两阶段微调与LLM智能体结合,用于带理由的智能合约漏洞审计。
大语言模型时代的模板引导程序修复
提出 NTR 两阶段框架,用微调 LLM 做模板选择与补丁生成,显著提升自动程序修复效果。
面向代码优化的基于搜索的大语言模型
提出 SBLLM,将 LLM 与进化搜索结合,通过迭代精化与优化模式检索自动提升代码执行效率。
COCA:面向分布式系统的代码知识增强生成式根因分析
COCA 从代码中抽取诊断线索并结合历史问题报告构造提示,让 LLM 在缺乏监控数据时也能定位与总结根因。
使用 LLM 自动化完整的软件测试流程:一个汽车行业案例研究
提出通过切分测试流程让 LLM 专注子任务的车载 API 自动化测试系统,在 100 多个 API 上验证有效。
Hyperion:利用大语言模型与数据流引导的符号执行揭示 DApp 不一致性
结合微调 LLaMA2 与数据流引导符号执行,自动检测 DApp 前端描述与后端合约实现的不一致。
使用大语言模型检测与修复代码注释不一致
基于 CodeLLaMA 微调出 C4RLLaMA,统一实现代码注释不一致的检测与注释修复,多项指标超越已有方法。
基于 Datalog 的微服务语言无关变更影响分析
提出 MICROSCOPE,用 Datalog 规则统一建模多语言微服务代码与配置,以识别受变更影响的接口。
GVI:引导式漏洞想象以提升深度漏洞检测器
提出GVI,用思维链提示引导LLM从种子漏洞想象生成新漏洞样本,缓解类别不平衡并提升深度检测器性能。
LWDIFF:一个LLM辅助的WebAssembly运行时差分测试框架
提出LLM辅助的WebAssembly运行时差分测试框架,用规范知识指导变异,覆盖解码、验证与执行三阶段。
Dockerfile 不稳定性:刻画与修复
首次系统研究 Dockerfile 构建不稳定性,提出成因分类法与结合 LLM 的混合修复框架 FLAKIDOCK。
基于蜕变测试的多目标蒸馏:面向代码相关任务的LLM压缩
提出Morph,结合蜕变测试与多目标优化,蒸馏出兼顾准确率、效率与鲁棒性的代码LLM。
大语言模型驱动的软件模型演化:在模拟、公共与工业数据集上的实验
提出 RAMC,用大语言模型、模型历史与检索增强生成补全软件模型,支撑模型演化。
我们是否在学习正确的特征?评估基于深度学习的软件漏洞检测方案的框架
提出基于特征保留与消除扰动的统一评估框架,揭示深度学习漏洞检测器对伪相关特征的依赖。
FixDrive:以每次违规 0.08 美元成本自动修复自动驾驶车辆驾驶行为
提出 FixDrive 框架,用多模态大模型从违规记录生成 μDrive 驾驶策略修复,减少违规与碰撞。
ChatGPT 在技术报告理解中的不准确性缓解:我们做到了吗?
提出 CHIME,通过 CFG 解析栈轨迹、蜕变测试和查询变换,缓解 ChatGPT 理解技术报告时的不准确,纠正率提升 30.3%。
软件成分分析中的隐私保护:技术方案与增强研究
首次系统分析软件成分分析(SCA)的隐私需求,并用程序分析削减基于 MPC 的隐私保护方案开销。
面向库 API 的基于 LLM 的输入空间划分测试
提出 LISP,用 LLM 理解库 API 代码并划分输入空间,生成高覆盖测试套件。
在大型语言模型时代重新审视自动程序修复中的非自然性
重新审视程序修复中的非自然性,用熵度量补足 LLM,提升故障定位、补丁生成与分类效果。
CodeImprove:面向深度代码模型的程序适配
提出 CodeImprove,用有效性评分识别域外程序,并以遗传算法做语义保持变换将其适配为域内输入,提升深度代码模型准确率。
形式化验证的二进制级指针分析
提出形式化证明正确的二进制级指针分析,并用通用抽象域证明义务支持不同精度实例化。
Moye:面向单体固件的破壁者
提出 Moye,利用寄存器约束与掩码语言模型识别单体固件中的函数边界,精度和召回率超过 97%。
TopSeed:从零学习符号执行的种子选择策略
提出 TopSeed,用在线学习从候选输入自动选择种子,提升符号执行的覆盖率与缺陷发现能力。
论深度强化学习实现可互换性的错误假设
通过差分测试揭示主流 DRL 算法实现间存在显著不一致,且可推翻基于可互换假设的实验结论。
代码语言模型的校准与正确性
构建代码生成模型校准性评估框架,发现模型开箱即用校准不佳,并评估 Platt scaling 的改进效果与适用边界。
LLM 集成 Web 应用中的 Prompt-to-SQL 注入:风险与防御
系统刻画了 prompt-to-SQL 注入攻击,评估七个 LLM 与五个真实应用的风险,并提出四种防御技术。
RLCoder:面向仓库级代码补全的强化学习
提出RLCoder,用强化学习让检索器无需标注数据即可为仓库级代码补全检索有用上下文。
迈向理解大型语言模型代码生成错误的特征
对六个LLM在HumanEval上的代码生成错误做实证分析,建立错误分类并揭示其语义/句法特征与成因。
利用大语言模型增强自动生成单元测试的可理解性
提出 UTGen,用大语言模型改进自动生成单元测试的命名、测试数据与注释,从而提升可理解性。
TOGLL:使用LLM生成正确且强的测试预言
首次大规模研究LLM生成测试预言,提出TOGLL,在正确性、多样性和缺陷检测上显著优于TOGA与EvoSuite。
用 LLM 推理程序的运行时行为:我们还有多远?
提出 REval 框架,从运行时行为推理与增量一致性两方面评估代码 LLM 的程序执行推理能力。
测试意图引导的基于大语言模型的单元测试生成
提出 IntUT,用显式测试意图引导 LLM 生成高覆盖且具备 mock 能力的单元测试。
INTERTRANS:利用传递式中间翻译增强基于 LLM 的代码翻译
提出 INTERTRANS,用 ToCT 算法规划并验证传递式中间翻译序列,显著提升开源 LLM 的代码翻译准确率。
基于 LLM 的程序修复中的事实选择问题
定义并系统研究 LLM 程序修复中的事实选择问题,提出按缺陷选择提示事实的统计模型 Maniple。
Rug:面向 Rust 单元测试生成的高效 LLM 方法
提出 RUG,结合语义感知自底向上上下文构建与覆盖率引导 fuzzing,让 LLM 为 Rust 项目自动生成可编译且高覆盖率的单元测试。
LiCoEval:评估大语言模型在代码生成中的许可证合规性
提出 LiCoEval 基准,评估 LLM 生成代码的许可证合规能力,发现多数模型无法准确给出许可信息。
基于 ChatGPT 的重构引擎测试生成:通过示例特征分析增强
提出用缺陷报告提炼的细粒度特征引导 ChatGPT 生成测试程序,并对多个重构引擎进行差分测试。
Clozemaster:利用 LLM 填充掩码真实程序以模糊测试 Rust 编译器
提出基于括号掩码与 LLM 填充的 Rust 编译器模糊测试方法,发现 27 个确认缺陷。
LLM-Agents 驱动的 sUAS 自动化仿真测试与分析
提出 Autosimtest,用多个 LLM 智能体协作自动完成 sUAS 仿真测试的场景创建、环境配置、任务生成与结果分析。
意图即一切:从你的意图出发精化代码
提出两阶段意图驱动代码精化方法:先从评审评论中抽取意图,再引导 LLM 生成修订代码。
GenC2Rust:从 C 生成泛型 Rust 代码
提出 GenC2Rust,通过静态分析 C 中 void 指针的类型约束,将其翻译为使用泛型的 Rust 代码。
特征驱动的端到端测试生成
利用LLM推断Web应用功能特征并生成可执行端到端测试,同时发布功能覆盖评测基准。
ML-enabled 软件系统中模型集成的大规模研究
对 2,928 个开源 ML-enabled 系统进行大规模实证分析,揭示模型集成、复用与架构实践。
按处方还是非处方?Kubernetes 社区推荐安全配置的实证研究
通过 CIS 推荐配置、开发者调查、544 个配置文件和 5 个 SAST 工具,揭示 Kubernetes 安全配置推荐与实践的脱节。
理解真实开发中的编译器 Bug
首次从真实开发提交信息中收集编译器 Bug,分析影响与规避方式,并总结七条发现。
以太坊生态系统规模的代理合约实证研究
首个以太坊代理合约大规模实证研究,提出字节码检测框架 PROXYEX,揭示使用模式与常见问题。
基于自定义变异合成对 MLIR 编译器进行模糊测试
提出 SynthFuzz,从已有测试自动推断参数化上下文相关自定义变异,用于 MLIR 方言编译器模糊测试。
未来的种子从历史中萌发:面向前瞻性深度学习库的模糊测试漏洞挖掘
提出首个面向新兴深度学习库的通用模糊测试框架 FUTURE,用历史缺陷信息微调 LLM 生成测试代码,在三个新库中发现 148 个缺陷。
PacDroid:一个以指针分析为中心的 Android 应用安全漏洞检测框架
提出以指针分析为中心的 Android 安全漏洞检测框架,统一处理别名与 Android 特性,兼顾精度、速度与鲁棒性。
NIODebugger:一种基于 LLM Agent 修复非幂等结果测试的新方法
首个用 LLM Agent 修复非幂等结果 flaky 测试的框架,经检测、探索、修复三阶段定位状态污染并生成补丁。
DL 双城记:当库测试遇见编译器
提出 Opera,将 DL 库测试知识迁移到 DL 编译器模型加载阶段进行缺陷检测。
自动检测AI生成源代码的实证研究:我们离目标还有多远?
系统评估现有AI代码检测工具并发现其泛化性差,提出基于微调LLM与AST特征的检测方法,F1达82.55。
基于极值理论的公平性测试
提出极值反事实歧视准则,用极值理论估计最坏情况歧视,并设计采样与缓解算法。
面向高效代码克隆检测的多表示 Transformer 与优化抽象语法树
提出 MRT-OAST,通过优化 AST 多表示与孪生网络,实现高效且准确的代码克隆检测。
从示例中学习带约束的 LTL 规约
提出带约束的 LTL 学习问题,用一阶关系逻辑编码并归约到 MaxSAT,实现 ATLAS 工具。
ConsCS:Circom 电路的有效且高效验证
提出 ConsCS 框架,用电路推理规则与二叉属性图加速 Circom 欠约束电路验证,并以领域信息引导 SMT 求解。
用于解析 Java 程序中本地代码的交互式跨语言指针分析
提出首个交互式跨语言指针分析 JNIFER,统一分析 Java 与 C 代码以解析 JNI 交互。
基于深度学习的代码审查:范式转变还是双刃剑?
通过29名开发者的对照实验,揭示LLM自动代码审查对审查行为、质量、耗时与信心的真实影响。
通过双向注释级共同基础增强代码生成
提出以代码注释为媒介、双向迭代对齐开发者意图与 LLM 生成的交互式代码生成方法。
LLM 遇上库演化:评估基于 LLM 的代码补全中的弃用 API 使用
首次系统评估 LLM 代码补全中弃用 API 的使用现状与成因,并提出两种轻量修复基线方法。
衡量人类使用 GitHub Copilot 编写的 C++ 代码的运行时性能
通过 32 人用户实验发现,使用 GitHub Copilot 辅助写出的 C++ 代码运行时性能显著更慢。
ML 草图与可视化代码助手的探索性研究
通过19名数据科学家的实验,探索 IDE 中基于手绘草图与 LLM 生成代码的视觉代码助手,并评估其可用性与生成质量。
通过链上测试用例增强与迁移的智能合约自动化测试生成
提出 Solmigrator,首次基于迁移的智能合约测试生成,从链上真实使用提取并迁移测试用例到新合约。
FairChecker:通过公平性验证检测 DeFi 协议中的窃取资金缺陷
提出“公平性缺陷”概念,并用跨过程、跨合约的符号执行与 SMT 静态分析自动检测 DeFi 合约中可零成本获利的窃取资金漏洞。
关键变量状态感知的定向灰盒模糊测试
提出 CSFuzz,通过静态分析提取目标相关关键变量并监控其运行时状态,实现状态感知的定向灰盒模糊测试。
面向深度代码模型的对抗样本迭代生成
提出 ITGen,利用失败攻击反馈与增强贝叶斯优化迭代生成黑盒对抗样本,提高深度代码模型攻击成功率与效率。
面向增强安全补丁检测的仓库级图表示学习
提出 RepoSPD,通过仓库级代码图与结构感知表示学习提升安全补丁检测。
TraceFL:通过神经元溯源实现联邦学习中的可解释性驱动调试
提出 TraceFL,通过神经元溯源定位联邦学习中影响全局模型预测的客户端。
Hetrify:RISC-V 上异构程序的高效验证
提出 Hetrify,将异构程序或不可验证片段编译为二进制并语义等价转换为可验证 C 代码,在 RISC-V 上实现高效验证。
AssetHarvester:一种检测软件制品中密钥-资产对的静态分析工具
提出静态分析工具 AssetHarvester,通过检测密钥与其所保护资产的配对,帮助开发者过滤误报并优先移除泄露密钥。
为顺序依赖的 flaky 测试排序相关测试
提出 RankF,用大语言模型与历史执行信息对测试排序,更快定位顺序依赖 flaky 测试的首个相关测试。
利用对比学习增强工业软件系统中的故障定位
提出 Falcon,用日志图表示与对比学习提升工业软件故障定位效果。
EffBT:一种高效的行为树反应式合成与执行框架
提出 EffBT,从 GR(1) 规约自动合成语义正确且高效执行的行为树,并引入剪枝与 Parallel 节点优化执行。
基于动态程序切分的协作软件验证
提出动态程序切分 DPS,使协作验证按需拆分程序并调度多个验证器,解决单个验证器无法完成的任务。
通过消除冗余摘要提升路径敏感值流分析
提出首个识别并消除冗余函数摘要的方法,在保证可靠性的同时显著加速路径敏感值流分析。
BSan:面向 COTS 二进制的强大且硬件无关的基于标识符内存错误检测器
提出基于标识符的纯软件二进制内存错误检测器,突破影子内存与硬件依赖限制,检测更多深层错误。
ROSA:用模糊测试发现后门
将灰盒模糊测试 AFL++ 与新型变形测试预言机结合,在运行时自动检测代码级后门触发。
静态分析工具中非确定性行为的广泛实证研究
首次对12个主流静态分析工具的非确定性行为开展大规模实证研究,揭示其成因并发现未知问题。
面向更好的答案:自动更新 Stack Overflow 帖子
提出 SOUP 框架,利用评论自动预测有效修改并更新 Stack Overflow 帖子,提升代码片段质量。
一种基于Lyapunov稳定性控制理论的强化学习软件测试预言
提出基于Lyapunov稳定性控制理论的测试预言LPEA,用自动判定替代人类专家判定RL软件输出正确性。
模块感知的上下文敏感指针分析
提出模块感知的上下文敏感指针分析,利用 JPMS 的 provides/uses 语义恢复指向关系并传播关键上下文。
相似但已修补(SBP)代码有害:SBP 代码对重复漏洞检测的影响及如何移除它们
提出与语言无关的 FVF 框架,利用代码变更历史识别并过滤相似但已修补代码,显著减少重复漏洞检测误报。
LLM 能否在电子表格中自如导航?
提出从代码库检索并组合数据预处理流水线的方法,使 LLM 能响应电子表格的自由形式数据清洗请求并持续扩充代码库。
FairSense:机器学习赋能系统的长期公平性分析
提出基于仿真的 FairSense 框架,检测并分析 ML 赋能系统在动态反馈下的长期公平性。
使用集合抽象合成文档数据库查询
提出一种从输入输出示例自动合成文档数据库查询的技术,利用集合抽象剪枝搜索空间。
TacDroid:通过基于 UI 转换图的混合分析检测非法应用
提出 TacDroid,融合动静态分析构建 UI 转换图并用图自编码器补全,精准检测非法 Android 应用。
增强开放网络(TON):智能合约缺陷的定义与自动检测
总结 TON 智能合约八类缺陷,提出静态分析框架 TONScanner,检出 14,995 个缺陷,准确率 97.49%。
Mock 深度测试:迈向深度学习数据与模型的分离开发
提出 mock 深度测试方法,将 DL 工作流分解并用 mock 数据与 mock 模型对数据准备和模型设计进行独立单元测试。
Java 程序中远程过程调用的静态分析
提出 RPCBridge,用适配器与逻辑规则建模 RPC 语义,并在调用图中构建 RPC 边以提升静态分析完整性。
减少依赖以实现可靠的并发缺陷预测
提出必要一致读事件(NRE)与混合分析算法,用静态语义精化读依赖,在不牺牲可靠性的前提下扩大线程交错空间,发现更多并发缺陷。
自动化、无监督且自动参数化的数据模式推断与异常检测
提出 RIOLU,无需标注样本和人工参数配置,从脏数据中自动推断精确正则模式并检测异常。
大语言模型时代的源代码摘要
系统研究 LLM 代码摘要工作流,评估自动评测、提示技术、解码参数、语言类型与模型能力差异。
LiSSA:通过检索增强生成迈向通用可追溯性链接恢复
提出 LiSSA:用 RAG 增强 LLM 实现通用可追溯性链接恢复,在代码相关任务上显著优于 SOTA。
代码行之间:揭示机器程序员与人类程序员的不同模式
提出 DetectCodeGPT,通过分析代码风格模式并插入空格换行扰动,显著提升机器生成代码检测。
SOEN-101:使用大语言模型智能体模拟软件过程模型进行代码生成
提出 FlowGen,用多个 LLM 智能体模拟瀑布、TDD 与 Scrum 过程模型协同生成代码,Scrum 变体在四个基准上较 RawGPT 平均提升约 15%。
使用扩散模型的高效自动驾驶测试领域增强
提出用扩散模型增强仿真驾驶场景的 ODD,以提升自动驾驶系统级测试覆盖率与故障发现。
LibreLog:基于开源大语言模型的准确高效无监督日志解析
提出无监督日志解析方法 LibreLog,用开源 LLM 结合分组、RAG、自反思与模板记忆,兼顾隐私、成本与准确率。
所见即所得:基于注意力的自引导自动单元测试生成
提出注意力自引导的两阶段方法AUGER,先预测缺陷再生成触发错误的单元测试,提升检测与触发效果。
基于多示例学习的不精确标签弱监督日志异常检测
提出不精确标注策略与MIDLog,用多示例学习从粗粒度日志集合中分离异常日志,实现弱监督日志异常检测。
GenAI 会让可用性测试过时吗?
提出 UX-LLM,用大型视觉语言模型预测 iOS 应用可用性问题,并评估其能否替代传统可用性测试。
面向 REST API 测试的多智能体方法:语义图与 LLM 驱动输入
提出首个依赖嵌入的多智能体 REST API 测试工具 AutoRestTest,结合 MARL、语义依赖图与 LLM 生成输入,提升覆盖率与故障检测能力。
释放预训练语言模型在基于语义的日志解析中的真正潜力
通过熵基样本选择、对比学习与推理优化,使小型 PLM 的日志解析效果媲美甚至超越 LLM 方法且更高效。
指令还是交互?通过提示工程探索与激发 LLM 的代码片段适配能力
通过实证研究揭示 LLM 代码片段适配弱于生成的原因,并提出交互式提示方法显著提升适配性能。
修复大语言模型对规约的误解以改进代码生成
提出提示技术 μFiX,通过思维激发与反馈提示协同修正 LLM 对编程规约的误解,提升代码生成性能。
面向可配置系统的蒸馏式终身自适应
提出 DLiSA 框架,通过终身规划与蒸馏知识播种实现可配置系统的动态自适应配置优化。
迈向更好地理解概率化 Delta Debugging
首次理论解析 ProbDD,并提出简化算法 CDD,在 76 个基准上保持同等性能。
未见的地平线:揭示 LLM 代码生成超越熟悉场景的真实能力
用三级代码混淆构建基准 OBFusEval,揭示 LLM 在未见代码上测试通过率最多下降 62.5%。
Decictor:面向评估自动驾驶系统中决策的鲁棒性
提出首个生成非最优决策场景的方法 Decictor,用于评估自动驾驶路径规划决策鲁棒性。
当量子遇上经典:刻画开发者论坛中讨论的混合量子-经典问题
首个针对混合量子-经典应用开发者问题的实证研究,基于531个论坛讨论归纳出反复出现问题的分类体系。
Python 生态中包级弃用的实证研究
通过混合方法实证研究,揭示 Python 生态包级弃用的公告、接收与处理实践及开发者与用户间的期望差距。
μPRL:基于真实故障的深度强化学习变异测试流水线
提出基于真实RL故障分类的变异测试流水线μPRL,可有效区分强弱测试生成器。
AI 辅助开发中的信任动态:定义、影响因素与启示
通过混合方法研究开发者如何定义、评估并动态调整对 AI 代码建议的信任,提炼并验证四条交互指南。
Rust 库中跨 FFI 边界的未定义行为研究
通过 Miri 与 LLVM 解释器联合执行,大规模评估 Rust 库跨 FFI 边界调用中的未定义行为。
移动应用动态内容变化的自动化无障碍分析
提出 TimeStump,一个基于形成性用户研究自动检测 Android 应用动态内容变化所引发无障碍问题的框架。
插桩驱动的演化感知运行时验证
提出首个插桩驱动的演化感知运行时验证框架 IMOP,通过只重插桩变更代码安全加速 RV,最高 40.2 倍。
把你的代码给我看!消除代码投毒:一种基于代码自然性的轻量级方法
提出 KillbadCode,利用 n-gram 代码语言模型检测并移除投毒样本中的触发 token,轻量且高效。
DesignRepair:基于大语言模型的双流设计规范感知前端修复
提出 DesignRepair,用代码与渲染页面双流视角结合 Material Design 知识库和 RAG,让 LLM 修复前端 UI 设计质量问题
神经双层优先级加速配置性能缺陷测试
提出 NDP,用两个神经语言模型估计测试 oracle 并按配置项与取值范围双层排序,从而更快发现配置性能缺陷。
剖析全局搜索:一种简单有效的方法来提升个体歧视测试与修复
提出 GRFT,通过遗传算法增强全局搜索、轻量随机局部搜索,并基于适应度修复,显著提升个体歧视测试与修复效果。
理解覆盖准则对大语言模型的有效性:一个来自越狱攻击的特殊视角
实证研究传统覆盖准则识别LLM越狱漏洞的有效性,并提出实时检测、测试优先级与覆盖引导攻击生成三项应用。
同中有异:论配置性能分析中的信息模态
实证研究手册与源码两种信息模态在配置性能分析中的作用,发现融合二者更优且现有单模态工具远逊人工。
通过实现分布外检测迈向更可信的深度代码模型
提出面向代码的无监督与弱监督分布外检测方法,提升深度代码模型的可信度。
从缺陷到收益:利用群体知识与 CrUISE-AC 改进用户故事
CrUISE-AC 自动分析公开 issue tracker,用 NLP 与 LLM 集成为用户故事生成额外验收标准,专家评估 80–82% 有效。
Sand:将净化器(Sanitization)与模糊测试解耦以实现低开销
SAND 将 sanitizer 检查移出 fuzzing 循环,仅对有趣输入运行 sanitizer 程序,降低开销且发现更多漏洞。
通过桥接局部性能数据与架构模型早期检测性能回归
提出桥接组件级局部性能数据与系统架构模型的方法,在开发阶段早期预测端到端性能回归。
模型之外的产品:开源机器学习产品仓库的实证研究
构建262个开源ML产品数据集,并分析30个仓库揭示从模型到产品的开发实践与架构。
In Vivo 模糊测试:通过放大实际执行
提出 in vivo fuzzing:用宿主程序执行上下文放大真实执行,对库中目标函数做覆盖引导的函数级模糊测试,免去手写 fuzz driver。
基于 token 级特征刻画代码 LLM 中的秘密记忆
提出四种 token 概率特征区分代码 LLM 的真实与幻觉秘密,并设计两阶段解码方法 DeSec 提升真实秘密提取。
MARQ:面向任务关键型 AI 软件的自动化结果质量适配工程
提出 MARQ 框架,让开发者声明不同 QoR 的 AI 服务链,并在运行时自动选择以满足实时约束。
Tiver:使用代码聚类技术识别 C/C++ 第三方开源组件的自适应版本
提出自适应版本概念与 Tiver,用函数级版本划分和代码聚类识别 C/C++ 第三方组件的多版本复用。
提示在 Python 与文本程序表示中帮助发现和修复 Bug 的方式不同
大规模众包实验表明,程序表示(Python vs 自然文本)和提示类型对用户找 bug、修 bug 的准确率有不同影响。
智能合约中中心化缺陷的定义与检测
定义了智能合约六类中心化缺陷,并实现基于权限依赖图的检测工具 CDRipper,在真实合约上验证有效。
IRFuzzer:面向 LLVM 后端代码生成的专用模糊测试
提出专用模糊测试器 IRFuzzer,以约束变异和指令选择插桩反馈发现 LLVM 后端代码生成缺陷。
利用传播感染交叉击杀变异体
通过内存状态分析定位候选断言,并利用交叉击杀模型优化断言增强,高效杀死存活变异体。
一种利用任意输入识别关键自动驾驶车辆故障的差分测试框架
提出 Difftest4av 差分测试框架,利用统计与序贯分析从任意输入中检测高严重度、持续性的自动驾驶系统故障。
利用频谱信息与因果分析提升代码行级缺陷预测
提出 SOUND,结合历史缺陷行的频谱信息与因果分析进行代码行级缺陷预测,显著提升缺陷行排序效果。
LLMs4Code 的模型编辑:我们距离目标还有多远?
首次系统评测模型编辑修复 LLMs4Code 代码知识,提出 CLMEEval 基准与增强方法 A-GRACE。
导航演化中深度学习系统的测试:一项探索性访谈研究
通过对22名工业界DL开发者的半结构化访谈,揭示演化DL系统测试的挑战、实践与需求。
TransferFuzz:基于历史轨迹的模糊测试验证传播的漏洞代码
提出 TransferFuzz,利用基础二进制历史轨迹引导目标二进制模糊测试,验证复用传播漏洞的可触发性及影响范围。
使用大语言模型通过上下文学习生成提交信息的实证研究
实证研究发现,LLM 借助上下文学习生成提交信息在主观评价和泛化能力上显著优于现有最优方法。
多样性驱动公平:面向机器学习软件交叉公平性的高阶变异体集成方法
提出 FairHOME,用输入高阶变异体集成在推理阶段提升 ML 软件的交叉公平性。
Chord:面向区块链交易并行性缺陷的统一检测
提出 Chord,通过统一冲突交易模型与动态测试编排,统一检测多种区块链的交易并行性缺陷。
理解与检测 npm 生态系统中的 Peer Dependency 解析循环
首次研究 npm 中 peer dependency 冲突导致的解析死循环 PeerSpin,并提出检测工具 PeerChecker。
Coni:通过状态感知的测试用例生成检测数据库连接器缺陷
提出状态感知测试用例生成框架 Coni,基于规范建模连接器状态并结合差分测试,检出 44 个新缺陷。
上下文胜过参数量:在提交信息生成中超越专有 LLM
提出 OMEGA,用 4-bit 量化的 8B 开源 LLM 结合上下文细化生成提交信息,在从业者偏好上超越 GPT-4。
SeeAction:面向 UI 自动化,从屏幕录像逆向工程 HCI 动作的 How-What-Where
提出基于深度学习的计算机视觉模型,从屏幕录像中识别用户动作的命令、控件和位置,以支持 UI 自动化脚本生成。
面向区块链共识实现的叉状态感知差分模糊测试
提出 FORKY,通过分叉感知变异与分叉多样化反馈的差分模糊测试,检测区块链共识客户端在分叉处理上的实现差异。
通过改善类可观测性来提升自动生成测试的有效性
通过代码变换暴露封装属性并增强复杂对象断言生成,提升 EvoSuite 自动测试的变异分数。
Solidity 智能合约中的代码克隆:普遍性、演化及对开发的影响
通过大规模实证分析揭示 Solidity 智能合约代码克隆高度普遍、部分共同演化且很少参与缺陷修复。
通过标准化模型卡回答关于机器学习模型的用户问题
分析 Hugging Face 上 11278 条用户提问,论证标准化模型卡可自动回答四成以上问题。
抖动下多概率需求的参数化证伪
提出结合参数化模型检测与多目标优化的方法,在抖动模拟下同时证伪多个概率需求。
谁在推送代码?GitHub 身份冒充现象初探
首次通过访谈与1250万提交数据揭示GitHub身份冒充的认知、检测与缓解现状。
PUPPY:通过受限优化计划构造发现 DBMS 中的性能退化缺陷
提出 PUPPY,通过对比全优化与受限优化计划的响应时间来自动检测 DBMS 性能退化缺陷。
PairSmell:一种审视软件模块结构的新视角
提出 PairSmell,用多款模块化工具识别实体对的不当分离/共置,将粗粒度设计问题细化为可指导重构的模块关系缺陷。
跌入兔子洞:辅助探索策略如何促进灰盒模糊测试?
首个灰盒模糊测试辅助探索策略的系统实证研究,发现字典策略最优,并提出CDFUZZ为每个种子生成定制字典。
面向高度可配置软件系统的高强度组合交互测试
提出局部搜索算法 HSCA,通过多轮生成、动态优先级与变量分组,显著提升高强度覆盖数组生成效果。
Janus:通过视觉差分一致性检测 Web 浏览器中的渲染缺陷
提出视觉差分一致性测试预言并实现模糊测试工具 Janus,在主流浏览器中发现 31 个非崩溃渲染缺陷。
GARL:遗传算法增强的强化学习用于检测基于标记的自主着陆系统中的违规行为
提出 GARL 框架,用遗传算法离线探索环境配置、强化学习在线搜索测试,在有限预算内高效发现无人机自主着陆系统的多样化违规场景。
不可避免的边界条件:目标冲突的控制视角
利用反应式综合的可实现性提出更强的边界条件定义,显著减少目标冲突分析中需人工处理的边界条件。
实用的对象级 Sanitizer:聚合内存访问与自定义分配器
提出 OLASan,通过在函数级聚合同一对象的内存访问并配合自定义内存标记与分配器,实现低开销且精确的对象级内存违规检测。
测试与理解 FHE 加固机器学习模型中的偏差行为
提出差分测试工具 HEDIFF,系统检测并理解 FHE 加固 ML 模型的偏差输入及其噪声模式。
基于扩散生成模型的执行轨迹重建
首次系统评估扩散模型用于重建不完整执行轨迹事件序列,其中 SSSDS4 在多场景下表现最佳。
DPFuzzer:发现无人机路径规划器中的安全关键漏洞
提出进化算法模糊测试框架 DPFuzzer,以环境风险因子引导生成多样关键场景,自动发现无人机路径规划器安全漏洞。
BDefects4NN:面向神经网络受控定位研究的后门缺陷数据库
提出首个神经元粒度的后门缺陷数据库 BDefects4NN,支持神经网络后门缺陷的可控定位与修复研究。
HedgeCode:面向代码搜索的多任务对冲对比学习框架
提出 HedgeCode 两阶段框架,用对冲对比学习对齐代码与自然语言的表示空间,并结合多任务联合学习提升代码搜索效果。
破坏 Android 变体与 AOSP 之间边界的设计异味
提出 DroidDS 自动检测 Android 变体与 AOSP 间破坏设计边界的设计异味,并实证其与维护成本和合并冲突的关联。
统计信息泄漏分析中对缺失事件的补偿
提出改进的信息泄漏估计器,通过多项分布估计重建缺失样本下的联合分布,在低覆盖率时仍能准确并安全地高估互信息。
SECRET:通过分段深度哈希实现可扩展且高效的代码检索
提出 SECRET,将长深度哈希码迭代训练为多段短码,用哈希表查表召回,大幅提升大规模代码检索效率。
什么引导我们的选择?建模开发者对生成式 AI 的信任与行为意图
基于 238 名开发者的调查与 PLS-SEM 建模,揭示影响开发者对生成式 AI 工具信任与采用意图的关键因素。
理解 npm 生态系统中对开源依赖弃养的响应
大规模分析 npm 广泛使用包的弃养普遍性、暴露范围及项目响应,发现显式 EOL 能加速移除。
小改动大收益:持续内核模糊测试的配置选择调优
提出持续内核模糊测试的六项配置选择需求,并调优 syzkaller 配置策略,显著发现更多新漏洞。
SmartReco:通过细粒度跨 DApp 分析检测只读重入漏洞
提出 SmartReco,结合静态分析与跨 DApp 模糊测试,检测智能合约中的只读重入漏洞。
“让我进入状态”:一项关于支持 ADHD 专业程序员的混合方法研究
通过质性分析与大规模调查,揭示 ADHD 程序员在时间管理与设计等任务上更易受困,并梳理其个人策略与组织支持。
场景驱动与上下文感知的 Android 应用自动化无障碍测试
提出 A11yScan,用场景驱动探索提升 UI 覆盖,并用上下文感知检测降低无障碍测试漏报与误报。
WDD:加权增量调试
提出加权增量调试WDD,按元素权重区分划分,显著提升测试输入最小化的效率与效果。
开源生态系统中可复现打包的实证研究
对六大包生态各4000个包做实证分析,揭示可复现构建率差异,并证明简单基础设施与工具修补可大幅提升可复现性。
ADAMAS:云服务系统中自适应领域感知的性能异常检测
提出基于 AutoML 的自适应异常检测框架 ADAMAS,通过无监督模型搜索与人在回路专家知识提升云服务性能异常检测。
移动应用覆盖率:30% 魔咒与前进之路
通过人类专家实验揭示 Android 应用 GUI 探索覆盖率约 30% 的根因,并提出超越 GUI 的可行绕过方向。
理解架构复杂性、维护负担与开发者情绪——一项大规模研究
对 Google 1252 个 C++/Java 项目的大规模实证研究,揭示架构复杂性与缺陷修复、开发者情绪间的统计关联。
Conventional Commits 分类初探
通过实证研究与自动分类,揭示并缓解 Conventional Commits 细粒度提交分类挑战。
科学家如何使用 Jupyter Notebooks:目标、质量属性与机会
通过观察20名科学家的Jupyter Notebook使用,归纳其目标、质量属性、策略与AI集成,并提出设计建议。
从录制的用户转录自动生成可访问性测试报告
提出 Reca11,用 LLM 从用户测试录像的自动转录中提取可访问性与可用性问题,自动生成测试报告。
揭示能耗吸血鬼:一种调试软件能耗的方法论
提出软件能耗调试方法,定位并隔离能耗热点,案例揭示 Alpine 因 musl memcpy 实现比 Ubuntu 多耗能。
揭示与检测以太坊智能合约中的密码学缺陷
首次系统定义智能合约中的九类密码学缺陷,并提出基于模糊测试的自动化检测工具 Crysol。
关系状态:“一言难尽”——Scrum 中开发者与安全专家的互动动态
通过访谈研究刻画 Scrum 中开发者与安全专家的协作关系、沟通模式与共同挑战,并提出改进建议。
为更好的 JVM fuzzing 选择初始种子
首次系统研究 JVM fuzzing 的初始种子选择,提出基于控制流图的选择方法,在更低开销下大幅提升缺陷发现能力。
安全特性工程的探索性研究
通过对26名工业从业者的探索性研究,揭示安全特性的选择、工程实践、代码特征与维护挑战。
没有 Harness 也无妨:Oracle 引导的 C API 模糊测试 Harness 自动合成
提出 Oracle 引导的 Harness 合成技术,用编译、执行与覆盖率变化作为正确性 Oracle 自动生成语义正确的 C API 模糊测试 Harness。
ZTD_JAVA:通过零信任依赖缓解软件供应链漏洞
提出零信任依赖方法 ZTD_Sys 与 Java 原型 ZTD_JAVA,以最小权限和持续监控防御软件供应链漏洞。
微前端反模式目录
通过将微服务反模式迁移到微前端并结合实践者调查,提出并验证了 12 个微前端反模式目录。
揭示隐藏层:软件仓库服务于 SEO 操纵
揭示利用软件仓库可信度操纵搜索引擎结果、推广非法网站的新型攻击 RepSEO,并大规模检测出 380 万个滥用包。
分析在网站上采用谷歌基于 nonce 的 CSP 方案的可行性
通过大规模爬取评估 Google 四项基于 nonce 的 CSP 方案在 Tranco 前 10K 网站的可行性与稳定性。
Thanos:基于存储引擎轮换的差分测试进行 DBMS 缺陷检测
提出 Thanos,通过存储引擎轮换构造等价 DBMS 进行差分测试,自动发现数据库系统缺陷。
UML 回来了吗?探究 UML 在开源软件中的过去、现在与未来
通过挖掘约1.3万个GitHub项目,发现UML在开源中仍使用不足,但随PlantUML/Mermaid等文本格式出现复兴迹象。
MAGIKA:AI 驱动的内容类型检测
提出深度学习内容类型检测工具 Magika,模型仅 1MB,百万文件上平均 F1 达 99%,优于现有工具。
EP-Detector:自动检测 Android 应用中的易错操作异常
首次刻画 Android 应用中的易错操作异常(EPA),并提出基于动态 GUI 测试的自动检测工具 EP-Detector。
通过 issue 报告分析解码实践中的 issue 解决过程:以 Firefox 为例
通过分析 356 份 Firefox issue 报告,归纳实际 issue 解决过程的阶段序列,并总结出 47 种过程模式。
跨托管语言运行时评估垃圾回收性能
提出 GEAR,用运行时无关内存操作原语生成一致的跨运行时 GC 负载并比较 Java、Go、C# 的垃圾回收性能。
InSVDF:接口状态感知的虚拟设备模糊测试
提出 InSVDF,通过建模 DMA 接口内部状态并引入异步感知状态快照与深度感知种子保存,显著加速虚拟设备漏洞挖掘。
用户角色模型通过促使软件开发者降低反社会功能优先级来改善社会可持续性
随机对照实验表明,提供用户角色模型能显著降低开发者对反社会软件功能的优先级,但利益相关者地图无效。
云模拟器的保真度:测试云端软件的模仿游戏
系统对比云模拟器与真实云服务的API行为,发现255个API中94个(37%)存在差异,并提出缓解技术。
广告驱动 Web 应用中的可访问性问题
大规模测量揭示第三方广告造成可访问性违规与隐私风险,并给出符合 WCAG 的设计指南。
通过重复研究探索 EVO 对意图评估效应的稳健性
通过伪精确重复实验验证 EVO 可视化能加快目标建模决策,并发现其配色方案不够直观。
RediI:支持分布式系统故障确定性复现的测试基础设施
提出 RediI 测试基础设施与 RediT 框架,可确定性控制分布式执行,以复现和回归测试分布式系统故障。
基于模式的量子工作流生成与适配
利用量子计算模式自动生成与适配量子工作流,降低手工建模异构软件工件的复杂度。
HIFI:通过博弈论交互视角解释与缓解算法偏见
从博弈论交互视角解释敏感信息编码,提出 HIFI 缓解算法偏见的 in-processing 方法。
Famos:通过有效多模态数据融合的微服务系统故障诊断
提出FAMOS,以独立特征提取与高斯注意力跨模态融合,将微服务故障诊断F1最高提升20.33%。
探究人际挑战对 OSS 中欢迎感的影响
基于 Linux Foundation 调查,论文发现人际挑战降低 OSS 贡献者的欢迎感,且性别少数与残障群体受影响更严重。
不编程地研究程序员:利用静息态 fMRI 探究编程专长
通过静息态 fMRI 比较程序员与非程序员,发现编程经验伴随语言、数学、注意及视觉相关脑区连接差异。
今日写代码,明日截止:软件开发者中的拖延现象
首个针对软件开发者的拖延症访谈研究,揭示其诱因、正负效应与缓解策略。
ICSE 2025 IEEE/ACM 47th International Conference on Software Engineering (ICSE) 2025
ICSE 2025 IEEE/ACM 47th International Conference on Software Engineering (ICSE) 2025
ICSE 2025 IEEE/ACM 47th International Conference on Software Engineering (ICSE) 2025
ICSE 2025 IEEE/ACM 47th International Conference on Software Engineering (ICSE) 2025
ICSE 2025 IEEE/ACM 47th International Conference on Software Engineering (ICSE) 2025
2024275 篇 · Proceedings of the IEEE/ACM 46th International Conference on Software Engineering
从深度学习模型中推断数据前置条件以实现部署中的可信预测
提出 DeepInfer:将训练好的 DNN 抽象为可做最弱前置条件推理的表示,从输出后置条件推断输入前置条件,以判定部署预测的可信性。
受数据流分析启发的深度学习用于高效漏洞检测
提出 DeepDFA,一种受数据流分析启发的图学习框架与嵌入技术,实现高效且有效的漏洞检测。
揭示并检测深度学习 API 的误用
首个针对 TensorFlow 与 PyTorch 的深度学习 API 误用大规模实证研究,并提出基于 LLM 的检测与修复方法 LLMAPIDet。
面向精度调优的混合精度程序性能与精度预测
用图神经网络学习混合精度程序表示来预测其性能与精度,从而加速动态精度调优。
Fuzz4All:基于大语言模型的通用模糊测试
提出 Fuzz4All,首个以 LLM 为输入生成与变异引擎、可跨多种输入语言通用的模糊测试器。
GPTScan:结合 GPT 与程序分析检测智能合约逻辑漏洞
提出 GPTScan,将 GPT 与程序分析结合以检测智能合约中的逻辑漏洞。
领域知识至关重要:利用修复模板改进提示以修复 Python 类型错误
提出用类型错误修复模板增强提示,将领域知识注入代码预训练模型,以自动修复 Python 类型错误。
论函数级漏洞检测器对跨过程漏洞的检测有效性
构建首个跨过程漏洞数据集,揭示函数级检测器在跨过程漏洞上效果显著下降。
PyTy:修复 Python 中的静态类型错误
提出 PyTy,首个基于学习的 Python 静态类型错误自动修复技术,利用跨语言迁移学习并在真实错误上达 85.4% 修复率。
DeMistify:识别移动应用中端侧机器学习模型的窃取与复用漏洞
提出 DeMistify,静态定位并自动插桩移动应用以窃取复用端侧 ML 模型,揭示现有防护不足。
PyAnalyzer:一种有效且实用的 Python 代码依赖提取方法
提出 PyAnalyzer,将函数、类和模块建模为一等堆对象并利用类型标注,高效高召回地提取 Python 依赖。
利用自动条件独立性推理实现因果发现算法的运行时验证
提出通过自动条件独立性推理对因果发现算法进行运行时验证的方法。
通过关系界传播实现可扩展的关系分析
提出关系界传播方法,通过语义规则自动收紧关系逻辑公式的界,提升有界模型检查的可扩展性。
评估大型语言模型在类级代码生成中的表现
指出现有代码生成评估多停留在函数/语句级,并强调需在类级场景考察LLM能力。
用于无测试故障定位的大型语言模型
提出 LLMAO:首个无需测试覆盖、基于 LLM 的代码行级故障定位方法,性能优于 MLFL 基线。
大语言模型是边界用例生成器:为深度学习库模糊测试构造非常规程序
提出将 LLM 用作边界用例生成器,构造非常规程序以弥补其倾向生成普通模式化代码的缺陷,用于深度学习库模糊测试。
智能合约与DeFi安全工具:它们满足从业者的需求吗?
考察智能合约与DeFi安全工具是否满足从业者真实需求,揭示其实际影响的不确定性。
SCVHunter:基于异构图注意力网络的智能合约漏洞检测
提出 SCVHunter 框架,用异构语义图与异构图注意力网络检测智能合约漏洞,并支持专家标注关键节点。
V8 JavaScript 引擎中 JIT 编译器的翻译验证
提出 TurboTV:基于 SMT 的分阶段翻译验证器,验证 V8 TurboFan JIT 编译的正确性并发现 LLVM 新误编译。
面向改进的基于深度学习的漏洞检测
揭示现有深度学习漏洞检测器因只关注单个基元而漏检跨基元漏洞,并提出改进框架。
FuzzSlice:通过函数级模糊测试剪除静态分析警告中的误报
FuzzSlice 以函数级 fuzzing 验证静态分析警告,从而剪除误报、降低人工确认成本。
通过跨域交互实现精确的稀疏抽象执行
提出跨域交互的稀疏抽象执行,以提升指针分析与主数据流分析的精度。
通过交互式 What-If 分析扩展代码模式推断
提出交互式 What-If 分析,让用户以更少标注控制代码模式推断的泛化与特化。
生成式人工智能世界中的软件工程研究
探讨 LLM 等生成式 AI 对软件工程研究的方向与影响。
大规模分布式系统模型检测的挑战与机遇
概述 Must 项目为工业级分布式系统提供设计验证支持的目标、技术特征与学术转工业经验。
提示即全部所需:基于大语言模型的 Android 缺陷自动复现
提出 AdbGPT,用提示工程让 LLM 零训练自动复现 Android 缺陷报告,成功率达 81.3%。
关于 AI 编程助手可用性的大规模调查研究:成功与挑战
基于 410 名开发者的问卷,揭示 AI 编程助手的采用动机、弃用原因与可用性挑战。
CoderEval:面向生成式预训练模型的实用代码生成基准
提出 CoderEval 基准,评估生成式预训练模型在真实代码场景下的代码生成能力。
探索ChatGPT在自动化代码精化中的潜力:一项实证研究
首次实证评估ChatGPT在基于代码评审的自动代码精化中的表现,并分析失败原因与改进策略。
迷失在翻译中:大语言模型代码翻译所引入缺陷的研究
大规模实证研究揭示LLM代码翻译正确率有限并归纳15类翻译缺陷,提出基于错误症状的提示改进方法。
语言模型提示的自动语义增强(用于代码摘要)
提出自动提取代码浅层语义事实(如变量名、前后条件、数据流)来增强LLM提示,以改进代码摘要。
DivLog:基于提示增强上下文学习的日志解析
提出 DivLog,用大模型上下文学习与多样性示例选择实现免训练、高精度日志模板解析。
UniLog:基于LLM与上下文学习的自动日志生成
提出 UniLog,用 LLM 的上下文学习实现无需微调的端到端自动日志语句生成,并显著降低调优成本。
面向代码补全的语言模型:一项实践评估
通过 IDE 插件和一年真实使用数据,定量与定性评估三个公开代码补全语言模型,并对比在线与离线表现。
基于对比学习的漏洞检测提升智能合约安全性
提出基于对比学习的智能合约漏洞检测方法,利用合约间相关性提升检测性能。
BinaryAI:基于智能二进制源代码匹配的二进制软件成分分析
提出 BinaryAI,用两阶段二进制源码匹配融合句法与语义特征,提升第三方库检测精度与召回。
测试极限:利用大语言模型生成异常文本输入以检测移动应用崩溃
提出 InputBlaster,用 LLM 生成带变异规则的测试生成器,自动产生异常文本输入以检测移动应用崩溃。
看不见就不想:通过拓宽输入范围与来源实现更好的自动漏洞修复
VulMaster 综合完整漏洞代码、结构信息与 CWE 专家知识,显著提升自动漏洞修复效果。
ITER:面向多位置补丁的迭代式神经修复
提出迭代式神经修复范式 ITER,通过持续改进部分补丁实现单/多位置修复,在 Defects4J 2.0 上修复 15.5% 的 bug。
代码搜索就够了?利用代码搜索改进代码建议
提出检索增强的代码建议框架,用代码搜索检索相似片段增强语言模型,显著提升代码补全与生成性能。
揭示代码模型中的记忆(Memorization)现象
揭示代码模型会逐字记忆并输出训练代码,带来漏洞、敏感信息与许可证等安全隐私风险。
Coca:改进与解释基于图神经网络的漏洞检测系统
提出 Coca,在提升 GNN 漏洞检测效果的同时给出更可靠的解释,缓解伪相关与冗余问题。
Xpert:基于大语言模型的查询推荐赋能事故管理
通过大规模实证研究KQL查询使用,并基于大语言模型提出Xpert查询推荐,提升云系统事故管理效率。
我们到了吗?解析最先进的智能合约模糊测试器
系统综述并实证评估智能合约模糊测试器,建立基准与多维指标,指出未来方向。
TRACED:面向源代码的执行感知预训练
提出执行感知的源码预训练方法 TRACED,将分支覆盖、运行时变量值等动态执行信息融入预训练,提升代码理解任务效果。
代码大语言模型中的记忆痕迹
该论文实证研究了代码大语言模型对训练数据的记忆与可提取性,并与自然语言模型比较。
面向漏洞检测的因果深度学习
提出 CausalVul,用 do-演算消除虚假特征,提升深度学习漏洞检测的准确率、鲁棒性与分布外泛化能力。
VGX:面向提升基于学习的软件漏洞分析的大规模样本生成
提出 VGX,用定制 Transformer 与漏洞注入编辑模式大规模生成高质量脆弱程序样本,以提升基于学习的漏洞分析。
面向 GUI 测试用例迁移的基于学习的控件匹配
提出首个基于学习的控件匹配方法 TEMdroid,用 BERT 建模上下文并采用两阶段训练应对样本失衡,显著提升 GUI 测试用例迁移效果。
深度学习作业低 GPU 利用率的实证研究
基于微软内部平台 400 个真实作业,实证刻画深度学习作业低 GPU 利用率的表现、根因与修复方式。
机器学习就够了:一种简单有效的基于 token 的代码克隆检测方法
提出基于 token 类型序列与机器学习的代码克隆检测方法 Toma,在 BigCloneBench 上兼顾有效性与效率。
CrashTranslator:直接从堆栈跟踪自动复现移动应用崩溃
提出 CrashTranslator,利用大语言模型预测触发步骤并用强化学习引导搜索,从仅含堆栈跟踪的崩溃报告中自动复现 Android 应用崩溃。
利用大语言模型与知识图谱增强探索性测试
用 LLM 构建用户任务与故障知识图谱,并以思维链推理生成高可行性探索性测试场景。
建模作业中 AI 混淆抄袭的自动检测
提出自动分析结合人工复核的建模作业抄袭检测方法,对 ChatGPT 混淆抄袭的检测率与鲁棒性显著优于现有工作。
通过预测程序依赖为漏洞分析任务进行预训练
提出控制依赖预测与数据依赖预测两种预训练目标,提升漏洞分析并可直接进行依赖分析。
结合结构化静态代码信息与动态符号轨迹的软件漏洞预测
首个融合静态代码信息与动态符号执行轨迹的深度学习漏洞预测系统,发现 37 个新 CVE。
脱离上下文:局部上下文在神经程序修复中有多重要?
系统研究神经程序修复中局部上下文配置对修复成功率的影响,并给出上下文窗口分配建议。
MultiTest:面向多传感器融合感知系统测试的物理感知对象插入方法
提出物理感知的对象插入方法 MultiTest,为多传感器融合感知系统生成多模态测试用例。
CNEPS:一种精确检查第三方 C/C++ 开源组件间依赖的方法
针对第三方 C/C++ 开源组件依赖识别中不可区分文件与重复组件的难题,提出精确方法 CNEPS。
保护 DeFi 智能合约免受预言机偏差影响
提出 OVer 框架,用符号分析与 SMT 求解自动分析预言机偏差下的 DeFi 协议安全性并生成防护语句。
CIT4DNN:利用潜在空间组合测试为神经网络生成多样且稀有的输入
提出黑盒方法 CIT4DNN,将组合交互测试用于生成模型潜在空间,生成特征多样且稀有的 DNN 测试输入。
在哪里?从漏洞报告中追踪漏洞相关文件
提出首个从漏洞报告追踪漏洞相关文件的框架,结合 LLM、搜索与分类器推荐文件并提升 SBOM 细粒度。
GrammarT5:面向代码的语法集成预训练编码器-解码器神经模型
提出 GrammarT5,一种集成语法的预训练编码器-解码器代码模型,以更好捕获代码结构。
软件评审中的 ChatGPT 不正确性检测
通过问题变形与迭代提示检测 ChatGPT 回答中的错误,在库选择基准上 F1 达 0.74—0.75。
识别开源软件漏洞的受影响库及其生态系统
论文聚焦开源软件漏洞受影响库及其生态系统的识别,并指出现有极端多标签学习方法因标签有限和忽略生态系统而效果不佳。
迈向可靠的人工智能:用于确保自动驾驶汽车系统级测试质量的充分性度量
提出面向自动驾驶汽车系统级测试的充分性度量,以弥补现有度量与故障检测能力相关性弱、依赖模型内部信息的不足。
面向自动补全 GitHub 工作流
提出 GH-WCOM,用 Transformer 加抽象化处理自动补全 GitHub workflow 形式的 CI/CD 配置。
面向端侧模型的白盒攻击研究
提出 REOM 逆向框架,将编译后的 TFLite 端侧模型还原为可调试版本,使白盒攻击更有效。
提示工程与 TODO 注释是友还是敌?对 GitHub Copilot 的评估
本文评估 TODO 注释能否增强提示工程,以及 GitHub Copilot 会偿还还是重现自认技术债。
面向序列决策过程的好奇心驱动测试
提出好奇心驱动的黑盒模糊测试方法 CureFuzz,高效发现序列决策模型中多样化的崩溃触发场景。
VeRe:面向深度神经网络修复的验证引导合成
提出 VeRe,用形式验证引导的故障定位与参数优化来自动修复神经网络错误行为,可去后门并修复安全属性。
从模糊测试数据中学习与修复深度强化学习策略
用搜索式模糊测试自动生成示范并搜索安全场景,无需专家知识地学习与修复安全高效的强化学习策略。
Rust-lancet:行为保持的所有权规则违规自动修复
提出 Rust-lancet,在保持程序行为的前提下自动修复 Rust 所有权规则违规。
面向智能合约中记账错误的发现
提出抽象类型传播与检查系统,将智能合约业务逻辑建模为银行式原语,以自动发现记账错误。
Marco:一种随机异步混合执行探索器
提出基于路径分歧概率的随机异步调度策略,提升混合执行测试的代码覆盖率。
FAIR:面向流类型感知的编译器中间表示预训练
提出流类型感知的IR预训练模型FAIR,用图Transformer与五项预训练任务,在四个下游任务上取得SOTA。
PS3:基于语义符号签名的精确补丁存在性测试
提出 PS3,利用符号仿真提取编译选项无关的语义签名,精确检测二进制中安全补丁是否存在。
REDriver:自动驾驶汽车的运行时强制执行
提出基于信号时序逻辑的通用模块化运行时强制执行方法,通过梯度驱动算法修复自动驾驶系统的规划轨迹。
经验报告:利用 ChatGPT 识别新手程序员的常见误解与错误
用 ChatGPT 仅凭学生代码与参考解自动识别并归类新手编程错误,准确率达 93.3%。
Prism:通过编译分解程序语义的代码克隆检测
Prism 借助多架构汇编代码规范高层语言的行为语义,并融合多特征表示,显著提升代码克隆检测效果。
DeepSample:面向运行准确率评估的基于采样的 DNN 测试
提出 DeepSample,用采样选择小而代表性强的 DNN 测试输入,兼顾准确率估计可信度与误预测暴露。
DocFlow:从软件文档中提取污点规范
提出 DocFlow,利用平台文档自动识别敏感方法并生成污点规范,无需访问源代码。
Raisin:识别用于缺陷检测的稀有敏感函数
提出 Raisin,旨在识别调用极少的稀有敏感函数,以支撑缺陷检测。
BinAug:利用低成本输入修复增强二进制相似性分析
提出 BinAug,通过低成本输入修复提升基于 DNN 的二进制代码相似性分析的稳定性与可用性。
基于 CodeBERT 的异常处理编程助手
提出 Neurex,基于 CodeBERT 多任务微调,为 Java 片段推荐是否需 try-catch、try 块语句与捕获异常类型。
张量感知的能量核算
提出 Smaragdine,一种张量感知的能量核算系统,可将 TensorFlow 深度学习程序的能耗按逻辑层次结构分解。
RogueOne:基于信任域的差分数据流分析检测恶意更新
提出基于差分数据流分析与信任域的 RogueOne,检测 JavaScript 包更新中的恶意代码。
这不是特性,而是 Bug:从噪声数据中进行容错模型挖掘
提出用 Partial Max-SAT 从含噪执行轨迹中挖掘确定自动机,允许忽略最少故障观测且无需预处理。
快速确定性的黑盒上下文无关文法推断
提出确定性黑盒 CFG 推断方法 TreeVada:按嵌套规则预结构化输入并递归应用学习规则,速度更快、文法质量更高。
具体约束引导的符号执行
提出具体约束引导的符号执行,通过引导路径探索覆盖未覆盖的具体分支,缓解路径爆炸并提升代码覆盖率。
宏使用可移植性的语义分析
提出首个宏可移植性分析框架与工具 Maki,将宏行为分解为26个属性,以94%准确率识别易移植宏并指导C代码迁移。
CDCL(T) 与局部搜索的深度结合:求解非线性整数算术理论的 SMT 问题
提出两层混合框架 HybridSMT,深度融合 CDCL(T) 与随机局部搜索求解 SMT(NIA),显著提升求解性能。
过程间分配环境(IDE)问题的符号特定稀疏化
提出过程间分配环境(IDE)问题的符号特定稀疏化,利用变量状态独立性安全省略流函数计算以加速静态分析。
初探继承导致的冗余测试执行
首次实证研究测试代码中的继承及其导致的冗余测试执行,并提出静态与动态分析结合的识别定位方法。
验证声明式智能合约
面向逻辑式 DSL De-Con 编写的声明式智能合约,提出自动化安全验证工具 DCV,可自动推断归纳不变式。
在可靠的并发缺陷预测中重排指针流
提出流敏感并发指针分析 ConPTA,并据此实现缺陷预测工具 Eagle,通过主动重排指针流检测四类并发指针缺陷。
程序超测试:理论基础与自动化测试生成
为超属性测试(hypertesting)奠定理论基础,并提出自动化测试生成方法。
JLeaks:从数百个开源 Java 项目中收集的特征化资源泄漏仓库
构建了目前最大、标注完整且可复现的 Java 资源泄漏缺陷仓库 JLeaks,并分析其分布、根因与修复方式。
一个推断用户定义函数属性的框架
提出 LAMBDA,静态推断 UDF 属性(如纯性)以帮助 DBMS 优化查询并避免重复调用。
使用大语言模型辅助代码理解
在IDE中构建无需显式提示的LLM对话界面,用户研究证明其辅助代码理解优于网络搜索。
大语言模型是少样本摘要器:基于上下文学习的多意图注释生成
实证表明大语言模型通过上下文学习即可生成满足多种开发者意图的代码注释,并显著超越有监督方法。
让 LLM 成为测试专家:通过功能感知决策将类人交互引入移动 GUI 测试
将移动 GUI 测试建模为问答任务,用 LLM 结合功能感知记忆提示生成并迭代测试脚本,显著提升覆盖率与缺陷检测。
LLMParser:利用大型语言模型进行日志解析的探索性研究
提出基于生成式LLM与少样本调优的日志解析器LLMParser,在16个开源系统上平均准确率达96%。
软件工程教育中的 AI 辅导
在自动化编程评估系统 Artemis 中集成 GPT-3.5-Turbo 作为 AI 导师,并通过探索性案例研究分析学生交互模式与体验。
评估AI检测器在识别AI生成代码方面的能力:对教育的影响
基于5069个Python编程题样本与13种提示变体,实证发现现有AIGC检测器难以区分人类与ChatGPT生成的代码。
PonziGuard:利用合约运行时行为图(CRBG)检测以太坊上的庞氏骗局
提出基于合约运行时行为图(CRBG)的以太坊庞氏骗局检测方法 PonziGuard,以提升检测可靠性与可解释性。
深度学习还是经典机器学习?基于日志的异常检测的实证研究
通过实证研究对比深度学习与经典机器学习在基于日志的异常检测中的性能与计算成本,揭示实际部署取舍。
我们还有多远?生成式 AI 在软件工程学习中的成功与挑战
通过对照实验评估 ChatGPT 辅助学生完成软件工程任务,发现生产力与自我效能无显著提升、挫败感增加,并归纳 5 类故障与 7 类负面后果。
面向多个受保护属性的公平性改进:我们还有多远?
系统评估 11 种公平性方法在多个受保护属性下的表现,揭示单属性优化会损害未考虑属性且仅看准确率不足。
实践中的基于属性的测试
考察开发者在实践中如何使用基于属性的测试,并总结其优势、不足与改进需求。
评估代码摘要技术:一种新度量与经验性刻画
提出基于对比学习的新度量,独立于参考摘要衡量生成代码摘要与代码语义的对齐,并实证其更贴近开发者评价。
挑战性环境下基于学习的 Android 恶意软件检测器综合研究
系统评测 12 种基于学习的 Android 恶意软件检测器在代码混淆、概念漂移与对抗样本下的鲁棒性差异。
KnowLog:面向日志理解的知识增强预训练语言模型
提出知识增强预训练语言模型 KnowLog,利用缩略语、文档描述与对比学习提升日志理解。
揭示预谋攻击:通过识别攻击者合约检测可利用的重入漏洞
提出通过识别攻击者合约来检测可利用的智能合约重入漏洞,以降低现有工具的高误报率。
FlashSyn:基于反例驱动近似的闪电贷攻击合成
提出 FlashSyn,通过反例驱动近似自动合成闪电贷攻击,以发现 DeFi 协议漏洞。
用深度强化学习深化 Android GUI 测试
提出基于深度强化学习与图嵌入的 Android GUI 自动化测试方法 DQT,在代码覆盖与缺陷检测上优于现有方法。
让我们向 AI 询问它们的程序:探索 ChatGPT 对程序理解问题的回答
评估 GPT-3.5/GPT-4 回答由其自身生成代码所衍生的程序理解问题,发现其会犯与新手类似的错误。
GitHub Actions 工作流中的资源使用与优化机会
首个针对 GitHub Actions 工作流资源使用与优化机会的大规模实证研究,量化 CI/CD 成本并给出平台级优化建议。
Mozi:通过基于配置的等价变换发现 DBMS 缺陷
提出 Mozi 框架,通过比较不同配置下等价 DBMS 的查询执行结果来发现正确性与性能缺陷。
MalCertain:通过应对预测不确定性增强基于深度神经网络的 Android 恶意软件检测
提出 MalCertain,利用 DNN 预测不确定性训练校正模型来修正检测结果,提升 Android 恶意软件检测准确率与对抗鲁棒性。
Oculus 虚拟现实应用的安全与隐私实证研究
构建 VR-SP 检测器并对 500 个 Oculus VR 应用开展安全与隐私实证研究,揭示普遍漏洞与隐私政策不一致
PrettySmart:检测智能合约中代币行为的权限再委托漏洞
提出字节码级检测器 PrettySmart,识别可被绕过权限约束并滥用代币管理功能的权限再委托漏洞。
通过单射与满射图查询变换检测图数据库管理系统中的逻辑缺陷
提出单射/满射图查询变换(GQT),通过变异查询并检验结果集间的等价、子集或超集关系来自动检测图数据库的逻辑缺陷。
通过静态分析生成 REST API 规范
提出 Respector,用静态与符号分析从源码自动生成 REST API 规范。
自动程序修复有什么用?并非一无是处!
通过40名开发者的用户实验,揭示APR补丁建议对调试成功率的影响:正确建议大幅提升,欺骗性建议降低。
探索自动程序修复在实践中的经验
通过 331 名开发者的调查,揭示自动程序修复的认知、使用现状、相关因素及工具缺陷。
野外学习:利用未标注数据有效微调预训练代码模型
针对标注数据稀缺,探讨如何利用带噪伪标注的无标注数据来有效微调预训练代码模型。
跨内联的二进制函数相似性检测
针对函数内联导致语义映射复杂的问题,提出跨内联的二进制函数相似性检测方法。
炒作时代的开发:自由职业者如何探索生成式 AI?
通过研究52名自由职业开发者,揭示其使用生成式AI开发的独特挑战,并提出SE4GenAI与HypeSE方向。
基于可满足性检查分析并调试规范性需求
提出 N-Check,用可满足性检查自动发现并诊断规范性非功能需求中的冲突、冗余、过强限制与不足等问题。
从大型语言模型中提取专门代码能力:一项可行性研究
探索以中型骨干模型切片商业黑盒大模型,提取其专门代码能力是否可行。
以用户为中心的 Copilot 安全性评估
通过用户研究评估 GitHub Copilot 对代码安全性的影响,发现其有助于解决较难问题时的安全表现。
unsafe 是阿喀琉斯之踵吗?Rust 不安全编程中安全需求的全面研究
对 Rust 标准库 unsafe API 文档中的安全需求进行系统研究,揭示其不一致与不足,并建议统一规范。
Golang 生态系统中漏洞生命周期的实证分析
实证分析 Golang 生态漏洞生命周期,揭示 commit 依赖与去中心化依赖管理对补丁分发的影响。
通过等价查询重写测试图数据库系统
提出通过等价查询重写测试图数据库系统,以暴露逻辑错误、性能缺陷和异常问题。
当神经代码补全模型审时度势:通过动态模型推理实现更廉价、更快速的补全
提出面向代码补全的动态推理方法,平均跳过1.7层,实现11.2%加速且ROUGE-L仅降1.1%。
Docker 坏味对镜像大小影响的实证研究
通过实证研究量化 14 种 Docker 坏味对 Docker 镜像大小的影响。
RPG:基于池化模糊目标生成与泛型支持的 Rust 库模糊测试
提出 RPG,用池化搜索生成多样化、偏重 unsafe 的 API 序列,支持泛型并校验有效性,自动合成 Rust 库模糊测试目标。
ACAV:自动驾驶车辆事故记录中自动因果分析的框架
提出 ACAV 框架,自动分析自动驾驶事故记录的两阶段因果事件,帮助定位事故原因。
LibvDiff:库版本差异引导的二进制开源软件版本识别
提出 LibvDiff,利用库版本差异引导二进制中开源软件版本的精确识别,以缓解版本字符串或常量特征缺失问题。
RUNNER:通过责任不公平神经元修复提升深度神经网络公平性
提出 RUNNER,一步诊断责任不公平神经元并用稳定化重训练修复,显著降低开销并提升 DNN 公平性。
细粒度、准确且可扩展的源代码差分
提出一种更廉价的启发式 AST 匹配方法,使 GumTree 可扩展到大型 AST,同时生成更小编辑脚本并显著加速。
ECFuzz:面向大规模系统的有效配置模糊测试
提出 ECFuzz,通过多维配置生成与单元测试验证,有效提升大规模系统配置模糊测试的缺陷发现能力。
ReFAIR:面向公平性需求工程的上下文感知推荐器
提出 ReFAIR,一个基于 NLP 与词嵌入的上下文感知需求工程框架,从用户故事中识别领域和 ML 任务并推荐公平性敏感特征。
当合约遇上密码学:探究开发者使用以太坊密码学 API 的困境
首个以太坊密码学 API 实践的实证研究,揭示开发者面临的五类障碍与底层 API 同高层任务间的可用性鸿沟。
S3C:面向自动驾驶车辆的空间语义场景覆盖
提出 S3C,用场景图把传感器输入抽象为空间语义覆盖域,以量化和解释自动驾驶测试数据集的场景覆盖。
通过基于迁移的自动化测试生成利用库漏洞
提出基于迁移的自动化测试生成方法,帮助项目判断是否受第三方库漏洞影响。
同步反转数据竞争的乐观预测
提出面向同步反转数据竞争的乐观动态预测方法,以发现调度不确定性下遗漏的数据竞争。
Fine-SE:融合语义特征与专家特征的软件工作量估算
提出Fine-SE,融合语义特征与专家特征进行软件工作量估算,并在工业与开源项目上验证其有效性。
MAFT:通过零阶梯度搜索的高效模型无关深度神经网络公平性测试
提出黑盒个体公平性测试方法MAFT,用零阶梯度估计与属性扰动高效发现DNN公平性违背。
通过 token 序列归一化检测自动化软件抄袭
提出基于程序依赖图的 token 序列归一化方法,使自动化混淆攻击失效,从而检出自动化软件抄袭。
基于偏好集成策略的实用程序修复
提出P-EPR,首个非学习型APR集成框架,用修复模式排序工具并动态更新,显著提升修复效果与灵活性。
理解数据库系统中的事务 Bug
通过实证研究理解数据库管理系统事务处理机制中的真实事务缺陷及其后果。
迈向更实用的漏洞评估自动化
提出 proEVA,利用 CVSS 指标关联与课程学习,从 issue report 实现早期漏洞评估并显著优于基线。
安全培训:在 Web 应用开发流水线中使用静态分析工具的结果
报告在 Web 应用开发课程中引入 SonarCloud 静态分析工具后,学生应用的安全问题显著减少。
DSFM:通过深度子树交互增强功能代码克隆检测
提出 DSFM,通过比较代码 AST 的深度子树交互引入细粒度语义相似性,提升功能代码克隆检测性能。
EGFE:基于多模态学习的 UI 设计碎片化元素端到端分组
提出 EGFE,用多模态 Transformer 与 UI 序列预测端到端分组碎片化 UI 元素,改善设计到代码生成。
变异的涟漪——变异测试中传播效应的实证研究
通过实证研究揭示变异测试中的故障传播效应,以理解故障为何转化为测试失败。
Kind 控制器与面向非良分离 GR(1) 规约的快速启发式
提出面向非良分离 GR(1) 规约的 Kind 控制器与快速启发式,以处理 NWS 质量问题。
面向移动应用的过时 GUI 测试脚本综合语义修复
提出 COSER,融合 GUI 外部语义与源码内部语义修复过时 GUI 测试脚本,可应对较大界面变化。
揭示 Rust 生态系统中编译器不稳定特性的使用与影响
系统分析 Rust 编译器不稳定特性的使用与生态影响,并构建编译失败恢复工具。
PPT4J:Java 二进制补丁存在性测试
提出 PPT4J,用于判断 Java 二进制是否已应用指定补丁,并指出从补丁提取准确语义信息是关键挑战。
难以阅读和理解 Pythonic 惯用法?用 DeIdiom 将其转换为非惯用等价代码并加以解释
提出 DeIdiom,将九类 Pythonic 惯用法自动转换为等价非惯用代码,以提升可读性并辅助理解。
语义增强的基带固件静态漏洞检测
提出语义增强的静态检测方法,面向被忽视的基带固件消息特定处理阶段漏洞。
揭示软件工程特有的隐喻与习语
研究软件工程交流中的隐喻/习语及其对LLM自动分析的影响,并证明微调可提升情感、不文明与缺陷优先级任务性能。
无人机日志异常的探索性调查
探索无人机飞行日志中软件缺陷引发异常的代码级模式,为诊断与定位工具提供依据。
少即是多?Python PyPI 生态系统中配置问题的实证研究
通过实证研究揭示 PyPI 生态中库配置问题,表明仅靠版本级检查不足以保障运行时兼容。
论用历史相似对话与帖子回答 Discord 上开发者问题的帮助性
实证研究 Discord 中重复开发者问题,并评估自动建议历史对话和帖子对回答的帮助性。
训练中模块化:一种模块化 DNN 模型的新范式
提出训练中模块化(MwT),将模块化融入 DNN 训练,以损失函数优化内聚与耦合,提升模型复用效率。
如何通过对话代理支持 ML 终端用户程序员
通过文献综述提炼 ML 终端用户程序员的挑战与支持策略,设计对话代理 Newton 并经用户研究验证其有效性。
MUT:人在回路的单元测试迁移
提出跨语言跨平台的人机协同单元测试迁移方法 MUT,复用测试并发现缺陷。
FuzzInMem:通过内存结构进行模糊测试
提出变异输入的内存表示并借助应用内建打印函数重新生成文件的模糊测试技术,无需分析格式约束即可保持结构合法。
面向字段重命名的上下文感知名称推荐
提出 CARER,利用动静态上下文与命名惯例为 Java 字段重命名推荐新名称,大幅提升 IDE 推荐准确率。
用于识别非程序员的抗 ChatGPT 筛选工具
设计并评估六个抗 ChatGPT 筛选问题,用可视化编程概念有效区分程序员与非程序员。
科学编程效能理论
通过访谈25位科学家,构建科学计算效能循环理论,提炼六项影响因素并提出工具改进机会。
编译器指导的客户端代码 API 调用点迁移
提出编译器指导的方法,自动迁移因库 API 破坏性变更而失效的客户端代码调用点。
参数化模糊测试中的交叉
提出 linked crossover,利用动态执行信息对齐并交换参数序列的对应片段,提升参数化模糊测试的输入生成效果。
LibAlchemy:一种双层持久化摘要设计,用于驯服静态缺陷检测系统中的第三方库
提出两层持久化摘要设计 LibAlchemy,在静态缺陷检测中平衡第三方库摘要的精度与开销。
注意!你的复制数据正被监控:Android 应用中剪贴板使用的系统性研究
提出静态分析工具 ClipboardScope,大规模系统研究 Android 应用剪贴板数据使用与隐私泄漏,并划分四类使用模式。
面向程序理解的噪声标签学习实证研究
对程序理解任务中深度模型受标签噪声影响及噪声标签学习方法进行实证研究。
超越功能正确性:编程作业时间效率的探索性研究
通过大规模实证研究揭示仅按功能正确性评分的编程作业存在显著运行时间差异,并归纳低效代码模式。
面向持久内存错误的基于约束的程序修复
提出基于约束的程序修复方法,可修复持久内存的持久性与崩溃一致性错误并发现新修复策略。
MalwareTotal:针对静态恶意软件检测的多层面与序列感知绕过策略
提出 MalwareTotal,通过多层面、序列感知的二进制操纵,在不改变功能下绕过多种静态恶意软件检测。
预训练代码模型的校准研究
系统评估五种预训练代码模型在四项代码理解任务中的校准表现,揭示其过自信问题及现有校准方法的局限。
有效“减脂”:利用 Java 反射与依赖分析精简软件依赖
提出结合 Java 反射与依赖分析的方法,移除客户端项目中实际未使用的第三方库以精简依赖。
ROSInfer:为基于 ROS 的机器人系统静态推断行为组件模型
提出 ROSInfer,通过静态分析 ROS API 使用模式自动推断机器人系统的行为组件模型,在 534 个组件上可推断 87% 的因果触发行为。
ReClues:在并行调试中用程序变量表示与索引失败
提出基于程序变量运行值的失败邻近度与失败索引方法 ReClues,显著提升多故障调试效果。
DeepLSH:面向快速高效近重复崩溃报告检测的深度局部敏感哈希学习
提出 DeepLSH,用孪生网络学习局部敏感哈希,实现崩溃报告的快速近重复检索。
MiniMon:基于智能监控的 Android 应用去臃肿
提出 MiniMon 框架,依据特定用户与应用的交互日志去除 Android 应用中的冗余功能,以缩减体积并减小攻击面。
利用细粒度 safe patch 识别增强供应链安全
提出 SPatch,利用细粒度补丁分析与差分符号执行识别 safe patch,辅助下游补丁传播。
使用软件度量生成和呈现代码质量自动化形成性反馈的设计原则
提出九条情境化设计原则,指导基于软件度量的代码质量自动化形成性反馈工具的设计与实现。
面向问答软件的知识图谱驱动推理测试
提出知识图谱驱动的推理测试方法,用于发现问答软件中的缺陷行为。
简化 Java 编程:用 IdioMine 揭示良构惯用法
提出 IdioMine,识别跨非连续代码行、数据流复杂的 Java 良构惯用法,并突破数据集特定限制。
对象图编程
提出对象图编程 OGO,用 Cypher 声明式查询直接读写整个对象堆,并为 Java 实现两种原型。
SpecBCFuzz:基于边界条件的 LTL 求解器模糊测试
提出以边界条件引导的 LTL 求解器模糊测试方法 SpecBCFuzz,发现大量真实缺陷。
数据驱动的基于证据的语法糖设计
通过挖掘 1.66 亿 Java 方法的频繁控制流子图,数据驱动地发现可新增语法糖以简化常见代码惯用法。
ModuleGuard:理解与检测 Python 生态中的模块冲突
提出 InstSimulator 与 ModuleGuard,系统研究并检测 Python 生态中同命名空间导致的模块冲突。
在 IDE 中使用签名支持基于 Web 的 API 搜索
提出 Scout,从搜索结果中抽取 API 签名,在 IDE 内按 API 分组排序并展示示例,减少查询与网页浏览。
ChatGPT 有助于入门编程吗?学生在 CS1 中使用 ChatGPT 的实验
通过课堂对照实验发现,CS1 中使用 ChatGPT 对学习成绩无显著提升,却降低学生探索其他资源的意愿。
BOMs Away!深入利益相关者内心:软件系统物料清单的综合研究
通过问卷与访谈揭示五类利益相关者在创建和使用 SBOM 时面临的 12 项挑战,并提出 4 项可行解决方案。
MetaLog:基于元学习的可泛化跨系统日志异常检测
提出 MetaLog,用全局语义嵌入与元学习实现跨系统日志异常检测,仅需目标系统 1% 标签即可达到 80%+ F1。
LogShrink:利用日志数据的共性与变异性实现高效日志压缩
提出 LogShrink,通过分析日志消息的共性与变异性,显著提升日志压缩比并保持合理压缩速度。
使用零样本 LLM 揭示软件开发者交流中情绪的原因
利用零样本大语言模型自动识别开发者交流中的情绪及其成因,以促进开源协作。
LLM 仍无法避免 instanceof:GPT-3.5、GPT-4 与 Bard 处理面向对象编程作业能力研究
通过自动评估工具测试 GPT-3.5、GPT-4 和 Bard 解决 OOP 作业的能力,发现可生成基本可用代码但常违背 OOP 最佳实践。
基于 Trace 的微服务系统性能问题多维度根因定位
提出 TraceContrast,结合对比序列模式挖掘与频谱分析,从 trace 中高效定位微服务性能问题的多维根因。
探索软件行业对无障碍教育的需求:来自印度软件从业者调查的洞见
调查269名印度软件从业者,揭示行业无障碍实践现状、挑战与培训需求。
开发者如何谈论 GitHub Actions?来自在线软件开发社区的证据
大规模实证分析 GHA 社区问答与 issue,构建首个问题分类并总结 56 种解决策略。
GenderMag 在实地提升可发现性,尤其对女性用户
通过五年日志与数万用户数据,首次大规模实证 GenderMag 能提升代码评审工具的可发现性并实现性别平等。
NuzzleBug:在 Scratch 中调试基于积木的程序
为 Scratch 实现支持步进、断点、反向执行与提问式解释的调试器,并评估其教学效果。
MotorEase:自动检测移动应用 UI 中的运动障碍无障碍问题
提出 MotorEase,自动检测移动应用 UI 中影响运动障碍用户的无障碍问题。
揭示用户反馈的生命周期:来自软件从业者的最佳实践
通过对40名从业者的访谈,提炼组织管理用户反馈的生命周期与最佳实践。
CERT:从基数估计视角发现数据库系统中的性能问题
提出黑盒技术 CERT,通过构造更受限查询检测基数估计违例,从而发现 DBMS 性能问题。
揭示软件交付团队中归属感的驱动因素:来自大规模调查的洞察
通过10,781人调查与PLS-SEM,揭示心理安全、工作认可、性别与领导角色等对软件交付团队归属感的影响。
自动测试生成工具会生成不稳定测试吗?
实证发现自动生成测试的 flakiness 至少与开发者测试相当,EvoSuite 抑制机制减少 71.7%,但成因分布不同。
利用 GUI 交互数据改进基于文本检索的缺陷定位
提出利用 GUI 交互数据弥合缺陷报告与源代码之间的语义鸿沟,以提升基于文本检索的缺陷定位效果。
SCTrans:为自动驾驶系统仿真测试构建大规模公共场景数据集
构建面向自动驾驶系统仿真测试的大规模公共场景数据集,并以规范文件格式供仿真平台使用。
自动检测响应式网页中的 Reflow 无障碍问题
提出自动检测响应式网页中键盘用户重排无障碍问题的技术,效果优于现有方法。
Sedar:通过跨 DBMS SQL 迁移获取用于 DBMS 模糊测试的高质量种子
提出 Sedar,通过跨 DBMS SQL 迁移为缺少测试用例的 DBMS 生成高质量模糊测试种子。
EDEFuzz:一种面向过度数据暴露的 Web API 模糊测试器
提出 EDEFuzz,用模糊测试自动发现 Web API 中的过度数据暴露问题
打破心流:软件工程活动中的中断研究
首个区分不同类型中断对软件工程活动影响的研究。
用持续集成游戏化一门软件测试课程
将游戏化工具 Gamekins 集成到 Jenkins 持续集成中,通过测试挑战、积分与排行榜激励学生更积极地编写测试。
CSChecker:重新审视 Web 上 Cookie Banner 的 GDPR 与 CCPA 合规性
重新审视最新技术框架下 Web 站点 cookie banner 对 GDPR 与 CCPA 的合规性,并关注违规成因。
基于视觉机械臂的实用非侵入式 GUI 探索测试
提出基于视觉机械臂的非侵入式 GUI 探索测试方案,以应对跨平台、屏幕差异与兼容性缺陷挑战。
揭示隐藏威胁:智能合约中库误用的实证研究
通过对500余份审计报告和22万余合约的实证分析,定义八种库误用模式并揭示其普遍性。
入门 Python 编程课程中教师对变量命名的信念与实践
通过访谈揭示入门 Python 教师对变量命名的信念、教学实践及其矛盾,呼吁有意识地教授命名。
TRIAD:基于 Biterm 增强的工件间传递链接推导的自动化可追溯性恢复
TRIAD 利用中间工件的共识 Biterm 与内外传递链接增强 IR 可追溯性恢复,优于四种 SOTA 方法。
FlakeSync:自动修复异步 flaky 测试
针对异步 flaky 测试,提出自动修复工具 FlakeSync,以替代不可靠的等待时间调整。
使用实践社群框架向行业专业人士教授数字无障碍:一项经验报告
通过实践社群框架为软件行业人员设计数字无障碍培训,并以对照分组比较其与自定进度学习的效果。
面向基于视频的缺陷报告重复检测的语义 GUI 场景学习与视频对齐
提出 Janus,用视觉 Transformer 场景学习与视频对齐检测基于视频的重复缺陷报告。
恢复软件文档与代码之间的追踪链接
提出 TransArC,用组件化架构模型作中间层,组合 ArDoCo 与 ArCoTL 恢复架构文档到代码的追踪链接。
灰盒模糊测试中的覆盖率速率外推
研究灰盒模糊测试中未来覆盖率速率的外推预测,以支撑基于覆盖速率的停止策略。
学生在代码变更理解中的障碍
结合访谈、观察与反思调查,揭示本科生在代码审查中理解重构类代码变更时的主要障碍。
通过团队学习(TBL)与开源软件(OSS)贡献衔接软件测试教学中的理论与实践
报告四学期软件测试课程中融合TBL与OSS贡献的教学实践,验证其能促进学生从理论走向实践。
可扩展地教授软件工程理论与实践:一份经验报告
报告面向数百名本科生的软件工程理论/实践课程设计,以及如何通过顺序教学与开放式考试实现规模化教学。
通过游戏化 IntelliJ 改善测试行为
提出 IntelliGame 游戏化插件,在 IDE 内奖励测试行为,实验表明能提升测试数量、覆盖率与变异得分。
经典永不过时:从 Bazel 构建技术降级的实证研究
实证研究关注团队为何放弃 Bazel 等现代构建技术并降级回传统构建技术。
Pythonic 函数式构造的可理解性研究
通过209名开发者的对照实验,评估Python函数式构造相比过程式写法在可理解性上的差异与使用建议。
新颖性带来人气,却抑制参与——Python 开源生态的宏观视角
以包导入的非典型组合度量 Python 项目的创新性,发现创新度越高 star 越多,但团队更小且更易被弃养。
重新审视 Android 应用分类
重新审视 Android 应用自动分类,指出错误分类会误导恶意软件检测等下游工具,并呼吁改进分类质量。
通过差分测试发现 XML 文档处理器中的 XPath 缺陷
提出 XPress,用差分测试自动生成 XML 文档与 XPath 查询,发现六个 XML 处理器中的 27 个独特缺陷。
集成 Canvas 与 GitLab 以丰富学习过程
提出集成 Canvas LMS 与 GitLab VCS 的高层编程框架,自动化学反馈并节省教学管理时间。
挖掘 Pull Request 以检测开源软件开发中的过程异常
利用过程挖掘从控制流与语义两方面识别 PR 过程异常并综合根因,为开源供应链风险提供早期预警。
因果关系与编程结果:一项经颅磁刺激实验
首次用经颅磁刺激(TMS)对编程认知进行因果性神经研究,检验脑区活动与编程结果是否存在因果关系。
高期望:编程与大麻中毒的观察性研究
首个受控观察研究发现,大麻在生态有效剂量下显著损害编程表现:程序缺陷更多、耗时更长。
可信源于设计
主张借鉴数十年人本设计经验,在设计阶段应对生成式 AI 系统的可信性、偏见与责任挑战。
全远程软件团队中的共同创造
通过访谈25名远程软件从业者,提出四种共同创造模型与工作链,并揭示工具支持需求。
面向双臂机器人的积木式编程:一项比较研究
提出并评估面向双臂机器人的积木式编程环境 Duplo,使非专业用户能处理需双臂协调的任务。
刻画软件维护会议:共享的信息、讨论结果与捕获的信息
通过案例研究刻画软件维护会议中的信息共享、讨论结果与信息捕获。
你的请求是你真正的需求吗?检查 VPA 应用中的过度数据收集
揭示 VPA 应用可能通过过度隐私声明掩盖数据收集,呼吁审计声明与真实需求的一致性。
eFish'nSea:用于学习软件性能问题根因与解决方案的 Unity 游戏集
推出八款 Unity 游戏 eFish'nSea,将八类软件性能问题的根因与解决方案映射为游戏机制,帮助非编程背景者建立性能意识。
评估提示在形式规约学习中的影响
通过随机实验评估 Alloy 形式规约学习中不同类型自动提示对表现、学习保持与情绪的影响。
打破壁垒:探究软件工程中女性与非二元性别学生的归属感
通过问卷与访谈揭示软件工程教育中女性与非二元学生的归属感障碍及角色榜样等促进因素。
从价值相关讨论预测开源贡献者流失:对 GitHub issues 的分析
分析52个DWeb项目的GitHub issues,发现价值相关讨论可预测贡献者流入与流失变化。
勒索软件攻击造成的数据破坏:一项实证研究
通过7796个勒索软件样本的大规模实证分析,揭示数据侦察、篡改与外泄行为并提出分阶段缓解策略。
有偿与志愿开源开发者有何不同?一项对 Rust 项目的研究
实证比较 Rust 项目中受薪与志愿开发者的贡献特征、长期参与及志愿者的看法。
揭示软件工程教育中的障碍:学习管理系统的作用
通过调查与访谈揭示软件工程教育中使用学习管理系统的挑战与需求,并指出其随课程规模而变化。
在实证软件工程教育中使用 Active Learning 的经验报告:从学生视角理解利弊
报告在实证软件工程课程中采用主动学习的教学经验,并从学生反馈总结其优缺点与改进建议。
“我几乎把广告视作一种瘟疫”:移动广告对盲人用户的可访问性影响
通过分析500个Android广告界面并访谈15名盲人用户,揭示移动广告的可访问性问题与用户偏好。
从软件工程基础课程出发向计算机科学本科生引入 DevOps 技术
报告在两门软件工程基础课程中早期引入 DevOps 实践与技术的教学经验,学生成果积极。
本科团队软件项目中冲刺回顾(Sprint Retrospective)的内容与质量:一项实证研究
通过分析32个本科团队963条冲刺回顾陈述,揭示学生反思的内容、质量及团队差异。
SERGE——软件项目管理中风险管理教育的严肃游戏
提出并评估严肃游戏 SERGE,通过游戏化与仿真提升软件项目管理中风险管理技能的学习效果。
结对编程中的公平学生协作
调查结对编程的配对与公平性,发现师生配对偏好不一致,认可与角色合规影响学习成效与公平。
“我的 GitHub Sponsors 主页已上线!”——探究 Twitter/X 提及对 GitHub Sponsors 的影响
首次实证研究 Twitter/X 上推广推文对 GitHub Sponsors 获得赞助的影响及其在平台上的接受度。
面向未来软件工程师的软件伦理教学
通过在线讲座、交互式情景化软件伦理测验与讨论汇报相结合的方式开展软件伦理教学并报告其效果。
女孩玩转代码:音乐编程中依赖性别的刻板印象、参与度与理解
通过 Sonic Pi 音乐编程课程发现,音乐编程可缩小性别差异,提升女孩兴趣与自我效能,并削弱程序员刻板印象。
弥合维护编程课程中的理论与实践鸿沟:经验报告
通过主动学习课堂与开放式遗留代码项目,弥合维护编程课程的理论与实践差距。
构建协作学习:在编程入门课程中探索社交标注
在编程入门课中以 Perusall 社交标注促进协作学习,发现参与标注与通过考试正相关。
使用 Discord 进行夏令营沟通的经验
报告在面向自闭症高中生的虚拟夏令营中使用 Discord 支持团队协作与沟通的经验与建议。
基于微服务的协作式问题解决方法在真实世界软件开发教学中的应用
提出一个基于微服务的协作式软件开发项目教学框架,用于提升学生解决真实问题的技术、社交与认知技能。
编程以应对:教授情绪与行为障碍儿童编程
论文探索在儿童青少年精神科临床环境中,用 Scratch 和 Sonic Pi 向情绪与行为障碍儿童教授基础编程并提升其自我效能。
在需求工程教育中使用视频创作任务的经验报告
报告在需求工程课程中引入视频创作任务,以提升学生动机与多媒体沟通能力的经验。
基于视频的会议沟通技能培训
提出并评估基于主动视频观看的面对面会议沟通技能训练方法及测量工具,在软件工程课程中显著提升概念知识与技能。
利用无障碍意识干预改善计算教育
通过体验式与表达式无障碍意识干预,提升计算教育中的共情与包容性软件开发意识,并提供可复用教学实验。
采用敏捷方法进行反思性学习与教学
报告在软件系统工程课程中采用敏捷式反思学习与教学的经验,并基于学生反馈评估其效果。
在软件工作室中培训应用开发者:Business Nano Challenge 经验
分析 Business Nano Challenge 在软件工作室中培养移动应用开发者技术、软技能与商业视野的效果。
2023254 篇 · 2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE)
Fairify:神经网络的公平性验证
提出基于 SMT 的神经网络个体公平性验证方法,通过输入划分与神经元剪枝实现可扩展的认证与反例生成。
PYEVOLVE:自动化 Python 机器学习系统中的频繁代码变更
提出数据流/控制流感知的变换规则推断引擎,自动挖掘、推断并移植 Python ML 系统中的频繁代码变更。
面向数值缺陷的深度神经网络架构可靠性保障
提出 RANUM,首个既能用失败测试确认 DNN 潜在数值缺陷可行性、又能自动生成修复的方法,在 63 个真实架构上优于现有方法。
学习加速析取式静态缺陷查找器
从数据中学习状态选择启发式,并为每个目标程序自适应挑选最佳模型,显著提升析取式静态缺陷查找效率。
大语言模型是少样本测试者:探索基于LLM的通用缺陷复现
提出Libro框架,利用大语言模型从通用缺陷报告中生成复现测试,并通过后处理与排序提升有效性。
自动修复大型语言模型生成的程序
系统研究自动程序修复技术能否修复大型语言模型(如 Codex)在编程竞赛中生成的错误代码。
机器学习模型优化中真实世界缺陷的综合研究
首个针对机器学习模型优化缺陷(MOBs)的大规模实证研究,基于 TensorFlow 与 PyTorch 的 371 个缺陷刻画其症状、根因与修复。
面向软件工程的大型语言模型:综述与开放问题
综述LLM在软件工程各环节的应用,指出幻觉等挑战,强调传统SE与LLM混合技术的关键作用。
大预训练语言模型时代的自动程序修复
首次系统研究直接使用9个最新LLM进行自动程序修复,在3种语言5个数据集上大幅超越现有APR技术。
CodaMosa:利用预训练大语言模型摆脱测试生成中的覆盖率平台期
提出 CodaMosa,在搜索式测试生成陷入覆盖率停滞时用 Codex 生成示例测试引导搜索,显著提升覆盖率。
Hugging Face 深度学习模型注册表中预训练模型复用的实证研究
首次实证研究 Hugging Face 中预训练模型复用实践,建模决策过程并量化其挑战。
CCTEST:代码补全系统的测试与修复
提出黑盒测试与修复框架 CCTEST,通过结构一致变异检测并修复 LLM 代码补全系统的错误输出。
CrossCodeBench:源代码模型跨任务泛化基准测试
提出含216个代码任务的CrossCodeBench基准,并验证上下文学习可显著提升源代码模型跨任务泛化。
DLInfer:结合静态切片的深度学习用于 Python 类型推断
提出 DLInfer,用静态切片与双向 GRU 深度学习模型自动推断 Python 变量类型,Top-1 准确率达 98.79%。
APICAD:通过来自代码与文档的规约增强 API 误用检测
结合代码与文档挖掘 API 规约,提升 C/C++ API 误用缺陷检测能力。
Rete:为程序修复学习命名空间表示
提出 Rete,通过学习项目无关的变量命名空间表示并联合排序变量与补丁模板,提升自动程序修复的效果。
Sibyl:通过 SMT 求解器选择改进软件工程工具
提出基于图神经网络的 SMT 求解器自动选择器 Sibyl,显著加速多种软件工程工具中的 SMT 查询求解。
Diver:基于预言引导和无限制随机变异的 SMT 求解器测试
提出 Diver,以预言引导的无限制随机变异测试 SMT 求解器,发现 25 个新缺陷,其中 21 个关键。
容忍控制流变化以实现可靠的数据竞争预测
提出不动点事件与偏序模型,可可靠推断带控制流变化的见证轨迹,从而检测更多数据竞争。
验证金融科技系统中的数据约束等价性
提出 EQDAC,一种高效判定数据约束等价性的决策过程,用于检测金融科技系统中的冗余约束。
(部分)程序依赖学习
提出 NeuralPDA,用神经网络学习完整与部分程序中的语句对依赖,预测 CFG/PDG 边并支持漏洞检测。
代码语言模型对自动程序修复的影响
首次系统评估与微调代码语言模型用于自动程序修复,并揭示其显著修复能力、微调收益及数据泄漏问题。
论代码生成技术的鲁棒性:一项针对 GitHub Copilot 的实证研究
通过实证研究揭示 GitHub Copilot 对语义等价自然语言描述的敏感性,约46%情况下生成代码不同。
软件漏洞数据集的数据质量
系统评估四个先进软件漏洞数据集的数据质量,揭示标签错误与重复问题及其对模型训练与评测的严重影响。
深度学习模型用于漏洞检测的实证研究
复现9个SOTA深度学习漏洞检测模型,揭示运行间波动、模型间低一致性及训练数据对性能的影响。
使用大语言模型为云事件推荐根因与缓解步骤
首次大规模评估 GPT-3.x 等大语言模型在云生产事故根因定位与缓解建议中的效果。
揭秘智能合约中的可利用漏洞
系统研究516个真实智能合约漏洞,归纳现有工具无法检测的可利用缺陷并提出修复与审计启示。
源代码预训练模型的实证比较
首次系统实证比较19个源代码预训练模型在13项软件工程任务上的表现,并分析模型类别与任务性能的相关性。
面向测试补全的深度语义学习
提出测试补全任务,并设计利用代码执行语义的深度学习模型 TECO,自动补全测试方法中的下一条语句。
基于图简化与增强图表示学习的漏洞检测
提出 AMPLE 框架,通过图简化缩短节点距离并增强图表示学习,提升深度学习漏洞检测对全局信息的捕获能力。
面向软件工程的可信与协同人工智能:愿景与路线图
提出可信且协同的 AI4SE 愿景与两条路线图,推动软件工程迈向 SE 2.0。
Taintmini:用静态污点分析检测小程序中的敏感数据流
提出 Taintmini,用通用数据流图建模跨语言、跨页面、跨小程序的数据流,静态检测敏感数据泄露。
深度学习库中自动微分的模糊测试
提出首个面向深度学习库自动微分组件的通用 API 级差分模糊测试方法 ∇Fuzz。
KNOD:用于自动程序修复的领域知识蒸馏树解码器
提出 KNOD,用三段式树解码器与领域规则蒸馏将语法语义知识注入补丁生成,修复缺陷数超越现有 APR 工具。
通过查询计划引导测试数据库引擎
提出查询计划引导(QPG),通过变异数据库状态使 DBMS 生成更多未见查询计划,从而发现数据库逻辑 bug。
转舵:以太坊智能合约重入检测的灯塔
对五种重入检测工具开展大规模实证评估,发现超过99.8%的报警为误报,指出现有能力有限。
DeepVD:面向神经网络漏洞检测的类分离特征
提出 DeepVD,一种基于图的神经网络漏洞检测模型,利用语句类型、后支配树和异常流图三类类分离特征,显著提升漏洞与良性代码的区分能力。
学习基于图的代码表示用于源码级功能相似性检测
提出 Tailor,用 CPG 与定制 GNN 学习深度图结构代码表示,提升源码功能相似性检测。
JITfuzz:面向 JVM 即时编译器的覆盖率引导模糊测试
提出覆盖率引导的 JVM JIT 编译器模糊测试框架,通过优化激活变异与调度高效发现 JIT 缺陷。
数据采样能提升基于深度学习的漏洞检测吗?是!与否!
系统评估数据采样对深度学习漏洞检测的影响,发现原始数据随机过采样最佳,且模型常不能基于真实漏洞语句推理。
SecBench.js:面向服务端 JavaScript 的可执行安全基准套件
首个面向 npm 服务端 JavaScript 的可执行漏洞基准套件,含 600 个漏洞利用与验证 oracle。
通过同时使用缺陷报告与测试来改进自动程序修复
结合缺陷报告与测试执行进行故障定位并无监督融合,显著提升自动程序修复的补丁正确数。
通过构建行为图模型增强基于深度学习的漏洞检测
提出行为图模型VulBG,用函数间全局行为信息增强基于深度学习的漏洞检测,在真实数据集上提升多个基线模型性能。
Concrat:面向并发程序的自动 C-to-Rust 锁 API 翻译器
提出自动工具 Concrat,将并发 C 程序的锁 API 转换为 Rust 锁 API,由保持语义的代码转换器与精确锁摘要静态分析器组成。
带漏洞关键方面解释的静默易受攻击依赖告警预测
提出可解释框架,预测静默易受攻击依赖告警,并生成漏洞类型、根因、攻击向量与影响解释。
同一枚硬币的两面:利用标识符在神经代码理解中的影响
从因果视角提出反事实推理框架CREAM,通过多任务学习与反事实推断抑制标识符误导,提升神经代码理解的鲁棒性与准确率。
VULGEN:结合模式挖掘与深度学习的真实漏洞生成
首个不限于特定漏洞类的注入式漏洞生成技术,结合模式挖掘与深度学习生成高质量易受攻击样本。
PTPDroid:检测 Android 应用中对第三方违反用户隐私披露的行为
提出流-政策一致性检查方法 PTPDroid,自动检测 Android 应用隐私政策中向第三方披露用户隐私的违规声明。
不同代码表示下的克隆检测技术比较与评估
复现12种算法比较代码表示对克隆检测的影响,并组合 token 与树表示实现 TACC。
基于记忆化配置搜索的编译器测试程序生成
提出 MCS,用多智能体强化学习结合记忆化搜索探索测试配置,生成更易触发编译器缺陷的测试程序。
Fonte:从失败中定位缺陷引入提交
提出仅需测试覆盖率的 BIC 识别技术 Fonte,结合故障定位排序提交,显著优于现有方法并支持加权二分。
通过 Transformer 自动化代码相关任务:预训练的影响
系统研究预训练目标对代码任务 Transformer 性能的影响,发现预训练仅在微调数据少时有益,且 MLM 通常已足够。
利用代码结构在神经机器翻译中解释软件缺陷
提出 Bugsplainer,基于 Transformer 的生成模型,从 bug 修复提交中学习并利用代码结构生成软件 bug 的自然语言解释。
CC:面向深度神经网络的因果感知覆盖率准则
提出首个因果感知的DNN覆盖率准则CC,用因果推断量化测试套件并提供优化,优于已有准则。
通过探索二维输入空间检测 JVM JIT 编译器缺陷
提出 JOpFuzzer,沿程序种子与优化选项两个维度引导模糊测试,有效检测 JVM JIT 编译器缺陷。
评估自动故障定位中实验假设的影响
通过裂分测试与开发者调研,揭示故障定位实验的三项常见假设会高估AFL、低估APR,并呼吁保守评估。
FedDebug:联邦学习应用的系统化调试
提出 FedDebug,用记录回放实现联邦学习交互式调试,并借助差分测试与神经元激活无需测试数据即可定位故障客户端。
面向可用性的 Java Liquid Types 设计
以参与式设计将 Liquid Types 融入 Java,实现 LiquidJava,并经 30 人用户研究证明其易学易用且能帮助发现并修复更多缺陷。
ECSTATIC:一个用于测试与调试可配置静态分析的可扩展框架
利用静态分析配置项间的偏序关系作为测试预言,实现可配置静态分析的自动化测试与增量调试。
为基于 LiDAR 的感知系统生成真实且多样的测试
以真实数据突变并保持真实性不变式,自动构造 oracle,为 LiDAR 感知系统高效生成真实多样的测试用例。
度量与缓解结构测试中的缺口
定义结构测试的覆盖缺口,实证其与故障检测负相关,并用依赖静态分析推荐测试焦点方法以缩小缺口。
检测 C++ 程序中的异常处理缺陷
扩展控制流图与符号执行框架,在 Clang Static Analyzer 上实现 C++ 异常处理缺陷静态检测工具,精度达 84%。
利用历史缺陷触发输入进行骨架枚举以验证 SMT 求解器
提出 HistFuzz,从历史缺陷触发公式提取骨架并用关联规则枚举原子公式,以模糊测试 SMT 求解器并发现大量新缺陷。
论语言模型在基于块(block-based)程序上的适用性
系统评估 n-gram 与 Transformer 语言模型在 Scratch 积木式程序上的代码补全与缺陷发现可行性,发现积木结构降低可预测性但方法仍可用。
MirrorTaint:面向 JVM 微服务系统的实用非侵入式动态污点跟踪
提出首个面向 JVM 微服务的实用非侵入式动态污点分析技术 MirrorTaint,通过镜像空间实现高精度低开销跟踪。
用续延编译并行符号执行
提出 Gensym,将符号执行任务编译为 CPS 风格的协作式并发,实现并行符号执行的优化编译器。
DStream:基于流式处理的高度并行 IFDS 框架
提出流式外存计算与细粒度数据并行的 IFDS 框架 DStream,显著降低内存占用并加速大规模程序分析。
何时说什么:学习发现条件-消息不一致
提出 CMI-Finder,用神经网络判断代码条件与自然语言消息是否一致,从而自动发现缺陷。
BSHUNTER:比特币脚本缺陷的检测与追踪
首次系统研究比特币脚本缺陷,定义六类缺陷,并用符号执行检测和虚拟机插桩追踪其利用。
我的哪些假设对可实现性是不必要的,以及为什么我应当关心?
提出检测并去除反应式系统规约中对可实现性不必要的假设,生成核心规约,从而合成更通用的控制器。
Ex pede Herculem:通过图卷积网络增强应用的 Activity 转换图
提出 ArchiDroid,用图卷积网络预测活动间缺失迁移,自动增强 Android 应用的 Activity 转换图。
平衡非确定性机器学习测试的有效性与不稳定率
提出 FASER,通过优化断言边界来权衡非确定性机器学习测试的故障检测有效性与不稳定率。
语境中的责任:论切片在语义回归分析中的适用性
评估双切片在回归故障排查中的适用性,并提出 INPRESS 压缩切片中的传播代码。
面向非终止性分析的数据驱动 recurrent set 学习
提出首个数据驱动的 recurrent set 学习算法,可相对完备地证明程序非终止,并在公开基准上优于现有工具。
ViolationTracker:为静态分析违规构建精确历史
提出 ViolationTracker,通过代码实体锚定与处理合并提交,精确匹配相邻修订间的静态分析违规并重建其生命周期。
为数据库支持的应用生成测试数据库
提出 DBGRILLER,通过变异现有数据库状态并用程序分析过滤,生成有效测试数据库以提升分支覆盖并暴露缺陷。
SmallRace:面向动态语言的静态竞态检测——以 Smalltalk 为例
提出 SmallRace,将 Smalltalk 翻译为统一指针类型的 SmallIR,用过程间线程敏感指针分析实现静态竞态检测。
利用紧凑且可解释的候选集定位框架特定崩溃故障
提出基于代码分离与异常抛出摘要的框架特定崩溃故障定位方法,生成紧凑可解释候选集。
迈向可信赖的 AI 系统之路
重新审视 AI 系统的测试基础,提出统计化可信性保证、测试过程要素与运行时监督,并连接测试与运行。
填空:面向移动 GUI 测试的上下文感知自动文本输入生成
提出基于LLM的QTypist,依据GUI上下文自动生成移动应用测试文本输入。
面向代码相关少样本学习的基于检索的提示选择
提出 Cedar,通过检索相似代码示例自动构建提示,提升代码少样本学习的测试断言生成与程序修复效果。
基于 Prompt 的少样本学习日志解析
提出 LogPPT,用提示调优和自适应采样实现少样本日志解析,提升模板与参数识别效果。
SkCoder:一种基于草图的自动代码生成方法
提出基于草图的代码生成方法 SkCoder,通过检索相似代码、抽取草图并后编辑,显著提升生成正确率。
我们是否遗漏了重要信息?研究与探索变量感知的日志抽象
论文揭示日志动态变量含任务相关信息,提出深度学习日志抽象方法VALB,实现变量感知的模板提取。
AChecker:静态检测智能合约访问控制漏洞
提出用静态数据流分析与符号分析推断并检测智能合约访问控制漏洞的方法,无需预定义模式或交易历史,精度与召回均优于现有工具。
CoCoSoDa:面向代码搜索的有效对比学习
提出CoCoSoDa,通过软数据增强、动量负样本与多模态对比学习提升代码搜索性能。
SemParser:面向日志分析的语义解析器
提出首个语义驱动的日志解析器 SemParser,挖掘日志中的显式与隐式语义并联合推断结构化输出,显著提升下游任务表现。
理解 Maven 生态系统中上游漏洞对下游项目的威胁
大规模分析 Maven 上下游依赖调用,揭示上游漏洞对下游项目的可达性、路径复杂度与开发者认知。
Tare:类型感知的神经程序修复
提出类型感知神经修复模型 Tare,用 T-Grammar 与 T-Graph 编码类型规则,减少不可类型化补丁。
一个 Adapter 适用于所有编程语言?面向代码搜索与摘要的 Adapter 微调
冻结预训练参数、仅微调 0.6% 的 adapter,在代码搜索与摘要上取得一致提升并缓解多语言微调的灾难性遗忘。
面向DNN使能系统在线测试的多目标强化学习
提出MORLOT,用强化学习生成动态环境变化序列并结合多目标搜索,提升DNN使能系统的在线测试效果。
ContraBERT:通过对比学习增强代码预训练模型
提出ContraBERT,用九种PL/NL数据增强与对比预训练提升代码预训练模型的鲁棒性。
坏蛇:理解与改进 Python 包索引(PyPI)恶意软件扫描
以 PyPI 为案例研究包仓库恶意软件扫描需求,评估现有工具并揭示社会技术检测协作模式。
基于 CWE 树结构的细粒度提交级漏洞类型预测
提出 TreeVul,利用 CWE 树结构对安全补丁提交进行细粒度漏洞类型分层多标签分类。
MTTM:面向文本内容审核软件的蜕变测试
提出蜕变测试框架 MTTM,通过字符、词、句级扰动生成对抗性有毒文本,发现并提升文本审核软件的鲁棒性。
开发者意图驱动的代码注释生成
提出 DOME,利用意图引导的选择性注意力,为同一代码生成反映不同开发者意图的注释。
重访DNN测试中的神经元覆盖:一种逐层且分布感知的准则
提出逐层、分布感知的DNN测试覆盖准则NLC,以层输出分布多样性指导输入变异并更有效发现错误。
OSSFP:使用指纹函数的精确且可扩展的 C/C++ 第三方库检测
提出 OSSFP,通过核心函数指纹去除噪声,实现 C/C++ 第三方库精确、可扩展检测。
深度学习测试生成器何时以及为何产生无效输入:一项实证研究
通过220名人类评估者与自动验证器,实证揭示深度学习测试生成器所产输入的 validity 状况及标签保持问题。
分析工作负载对可配置软件系统性能建模的影响
通过九系统大规模实证研究,揭示工作负载与配置项交互会显著影响性能模型泛化性。
面向无监督程序翻译的语法与领域感知模型
提出 SDA-Trans,融合语法结构与领域知识,在小规模语料上提升无监督程序翻译和跨语言迁移能力。
深度神经网络中公平性缺陷的信息论测试与调试
提出信息论测试与调试框架 Dice,量化并按严重性排序 DNN 公平性缺陷,因果定位问题层与神经元。
CoLeFunDa:可解释的静默漏洞修复识别
提出 CoLeFunDa,结合对比学习与函数级代码变更增强,识别静默漏洞修复并解释其 CWE 与可利用性。
生成式AI(GenAI)系统的软件测试:挑战与机遇
探讨生成式AI系统给软件测试带来的新挑战,并展望未来测试研究的机遇。
CCRep:基于预训练代码模型与 Query Back 的代码变更表示学习
提出 CCRep,用预训练代码模型与 query back 机制学习通用代码变更表示,在三个下游任务上均超越 SOTA。
CHRONOS:从漏洞报告中时间感知的零样本库识别
提出 Chronos,用零样本学习与时间感知缓存从漏洞报告中识别库,显著优于极端多标签方法。
效率至关重要:利用 GUI 渲染推断加速自动化测试
提出基于图像的 AdaT 方法,动态推断 GUI 渲染状态以调整事件间隔,兼顾测试效率与有效性。
面向 Java 项目第三方库漏洞的兼容性修复
提出 CORAL,在修复 Maven 项目第三方库漏洞的同时保证项目编译与单元测试不被破坏。
评估与改进混合模糊测试
首次系统评估主流混合模糊测试器,并提出通过升级协调模式提升效果的 CoFuzz。
通过重写引导的对象生成改进 Java 反序列化 gadget chain 挖掘
提出 GCMiner,通过捕获显式/隐式调用并用重写引导对象生成,挖掘更多 Java 反序列化 gadget chain。
基于模板的神经程序修复
提出融合模板与NMT的神经程序修复方法TENURE,用编码器-解码器生成补丁中间表示,在Defects4J上达到最优。
通过事务预言机构造检测 DBMS 隔离性缺陷
提出 Troc,将事务拆为独立语句并按声称隔离级别构造视图,通过执行分歧检测 DBMS 隔离性缺陷。
基于 AI 的问答辅助:面向自然语言需求分析
提出 QAssist,利用问答与外部领域知识自动辅助自然语言需求分析,并在多领域数据上验证答案定位与抽取效果。
Aries:通过无标签准确率估计对深度神经网络进行高效测试
提出 Aries,利用决策边界距离估计 DNN 在无标签数据上的准确率,实现高效测试。
通过模型再工程复用深度神经网络模型
提出SeaM,通过梯度搜索保留与目标任务相关的权重,再工程DNN模型以降低复用开销和缺陷继承。
跟上持续增长的数据:面向代码智能模型的持续学习
提出 REPEAT,通过代表性样本回放与自适应参数正则化实现代码智能模型的持续学习,缓解灾难性遗忘。
面向深度学习系统的回归模糊测试
提出 DRFuzz,用多样性导向测试准则与 GAN 生成高保真输入,以发现深度学习系统版本间的回归故障。
面向云系统的覆盖率引导故障注入
提出 CrashFuzz,按运行时反馈变异并优先节点崩溃/重启组合,以覆盖率引导方式高效测试云系统的崩溃恢复行为。
八种坏味道:量子计算中代码坏味道普遍性的实证研究
定义八种量子特有代码坏味道,开发检测工具 QSmell,并实证发现多数开源量子程序存在坏味道。
RepresentThemAll:缺陷报告的通用学习表示
提出预训练框架 RepresentThemAll,学习缺陷报告的统一表示,并在四类下游任务上超越基线。
GRADESTYLE:集成 GitHub 的 Java 代码风格自动化评估
提出 GRADESTYLE,一个集成 GitHub 的 Java 代码风格自动评估工具,并在课程中验证其能持续改善学生代码风格。
更快还是更慢?用经验证据揭开 Python 惯用法的性能谜团
通过大规模合成与真实项目数据,系统测量并字节码级解释 Python 惯用法相对非惯用写法的性能差异。
重新审视基于学习的提交信息生成
系统研究学习型提交信息生成的输出模式,发现约90%为简单模式,并揭示模型主要依赖变更标记。
Stack Overflow 帖子的自动摘要
提出深度学习框架 Assort,用于 Stack Overflow 帖子自动摘要,覆盖有监督与零样本设定并显著优于基线。
数据质量至关重要:过时注释检测的案例研究
通过数据清洗与对抗学习提升即时过时注释检测准确率,表明数据质量是关键。
PILAR:研究与缓解配置对日志解析的影响
实证揭示日志解析器对参数敏感,并提出基于熵的参数不敏感解析器PILAR。
RAT:面向缺陷定位的重构感知可追溯性模型
提出重构感知的可追溯性模型,重建被重构打断的代码历史,从而显著提升基于历史的缺陷定位效果。
Badge:基于分层多臂老虎机的 UI 事件优先级排序用于自动化 UI 测试
提出 Badge,用分层多臂老虎机同时估计 UI 事件的探索价值与探索多样性,以提升自动化 UI 测试效果。
开发者实现设计决策的质性研究
通过混合方法研究揭示开发者选择代码实现方案时的决策类型、考量、过程与专长,发现实现决策需持续关注高层设计。
利用静态分析促进学生参与软件质量改进:基于 PMD 的实践经验
通过三个学期的课堂实验,评估 PMD 静态分析工具在代码审查教学中提升学生软件质量意识的效果。
构建系统规格说明的代码审查:普遍性、目的、模式与感知
首次实证研究构建系统规格说明的代码审查,发现其讨论更少、更易指出缺陷,并揭示社会与技术阻碍因素。
源代码推荐系统:从业者视角
通过80名开发者研究,归纳70项代码推荐系统需求,指导面向实践者的设计。
论软件缺陷数据集的可复现性
研究软件缺陷数据集的可复现性,发现广泛失效并提出依赖缓存与工件隔离,将复现率提升至95%以上。
蜕变式着色器融合:面向图形着色器编译器的测试
提出 FSHADER,用着色器融合等四种蜕变关系测试图形着色器编译器,发现大量错误编译与优化缺陷。
统一回归测试的测试选择
提出统一回归测试选择 uRTS,统一考虑代码与配置变更,安全减少测试并加速端到端回归测试。
DeepArc:面向模型维护的神经网络模块化
提出 DeepArc,将神经网络拆分为语义相似的连续模块,从而降低模型重构与再适配等维护成本。
基于 Max-SMT 的灵活且最优的依赖管理
提出 Pacsolve 框架与 Maxnpm,用 Max-SMT 将依赖求解建模为可定制约束与多目标优化问题,替代 NPM 的贪心算法。
实践中的代码重构定制化:一个未被讲述的故事
通过分析13个项目1162次重构与调查40名开发者,揭示实践中重构常伴随定制化修改且IDE支持不足。
分析在线编程课程中提交内容的质量
分析 JetBrains Academy 超百万 Java/Python 提交,揭示代码质量问题类型、修复动态及课程改进方向。
将循环神经网络分解为模块以实现复用与替换
首次提出将RNN分解为模块的方法,让训练好的RNN可复用、可替换且无需重训。
GameRTS:面向视频游戏的回归测试框架
提出首个面向游戏软件的回归测试选择技术,将测试套件建模为状态转换图并结合变更影响分析,显著减少测试并发现回归缺陷。
基于路径敏感语义分析的 Android 应用兼容性问题检测
提出 PSDroid,通过路径敏感语义分析检测 Android 应用 API 兼容性问题,显著降低误报与漏报。
Columbus:通过系统化回调探索的 Android 应用测试
Columbus 自动识别 Android 回调并生成有效参数,借助数据依赖与崩溃引导反馈提升崩溃发现与覆盖率。
行为设计对环境偏差的鲁棒化
提出行为鲁棒化技术,将设计改造形式化为多目标优化,使系统在环境偏差下仍满足关键性质。
UPCY:安全地更新过时依赖
提出 UPCY,用 min-(s,t)-cut 与 Maven Central 图数据库计算依赖更新路径,最小化不兼容性。
利用特征偏差实现机器学习模型的可扩展误预测解释
提出 BGMD 利用特征偏斜与代表性不足特征高效诊断误预测,并用 MAPS 重加权采样修复模型。
依赖门面:Android 框架与其定制化之间的耦合与冲突
提出 DepFCD 从接口级、侵入级与 non-SDK 约束三方面刻画下游定制与上游 Android 的依赖耦合,并实证其与合并冲突的关系。
用机器学习改进 API 知识发现:可比 API 方法的案例研究
用机器学习从 Stack Overflow 抽取可比 API 方法并提供工具提示,用户研究证明其能帮助开发者理解 API 设计空间。
使用反应式合成:一项端到端探索性案例研究
通过学期工作坊的端到端案例研究,揭示反应式合成的收益与障碍,并提出改进方向。
Smartmark:面向智能合约的软件水印方案
提出 Smartmark,在以太坊智能合约字节码中嵌入并验证软件水印以保护所有权。
轻量级的 DNN 回归错误削减:不确定性对齐视角
提出无需重训练与数据、不牺牲精度的集成策略,通过对齐新旧模型的不确定性来减少 DNN 回归错误。
我们如何阅读形式化命题?眼动追踪与算法证明的认知
通过34人眼动追踪研究,发现先修背景并非形式化证明理解表现的可靠预测因子,高表现者表现出更多注意切换。
代码重构是否影响合并工作量?
对28个开源项目40,248次合并提交的挖掘表明,代码重构会显著增加合并工作量的发生概率与强度。
Pull Request 中的可测试性重构:模式与趋势
大规模研究 Java PR 中为提升可测试性而进行的复合重构,归纳出十种模式并揭示其趋势。
为安全而训练:规划在 Web 应用开发流水线中使用静态分析工具(SAT)
通过课程实证研究规划将静态分析工具引入 Web 应用开发流程,以提升学生软件安全能力。
REFERENT:面向编程课程、利用作业信息的基于 Transformer 的反馈生成
提出 REFERENT,通过迁移学习与作业信息让 Transformer 无需参考程序即可为错误编程提交生成反馈。
软件工程作为负责任 AI 的关键枢纽
主张软件工程是负责任 AI 的关键枢纽,并呼吁从构建功能转向发现和管理 AI 系统的涌现功能。
为初始软件理解识别关键类:我们能做得更好吗?
提出 iFit,用类依赖网络与类引力场度量 CG 识别面向对象软件的关键类,优于基线且可扩展。
面向反应式合成的规约中的触发器
首次为反应式合成规约引入触发器,给出可高效翻译到 GR(1) 的语义与基于 SFA 的最优编码,并在 Spectra 实现和用户研究中验证。
面向工业控制系统寻找因果不同的测试
提出引导式模糊测试方法,基于传感器/执行器操纵策略的形式化,发现因果不同的ICS测试。
面向操作数变化的差分分析:模糊测试 PDF 阅读器中的绑定调用
提出面向操作数变化的差分分析,自动推断 PDF 阅读器绑定调用参数类型并指导模糊测试,发现 38 个新漏洞。
软件工程的未来 @ ICSE 2023
总结 ICSE 2023“软件工程未来”专题,汇集研究者与从业者探讨 AI 时代软件工程研究方向。
PExReport:自动创建精简的可执行跨项目失败报告
PExReport 自动生成裁剪后的独立可执行跨项目失败报告,显著减少复现所需的源码与依赖。
无运行时开销的安全底层代码是可行的
通过类型不变式证明潜在不安全操作的安全性,实证表明 Rust、C# 与 Ada 可无运行时开销实现安全网络设备驱动。
面向数据密集型可扩展计算与异构计算的软件工程
综述数据密集型可扩展计算与异构计算给软件工程带来的挑战,并介绍面向该领域的自动化调试、测试与重构技术及经验。
程序语言语义的定理证明方法
在 F* 证明助手中编码 WHILE 语言的操作、指称与公理语义,展示定理证明可辅助语义教学与研究。
Eadro:面向多源数据微服务的端到端故障排查框架
提出首个融合异常检测与根因定位的端到端框架,利用多源数据和多任务学习提升微服务故障排查效果。
软件物料清单(SBOM)的实证研究:现状与未来方向
首个面向SBOM实践者的实证研究,归纳26条实践现状陈述并构建目标模型,指出采用挑战与未来方向。
面向软件系统的基于半监督跨模态注意力的异构异常检测
提出首个端到端半监督方法 Hades,用跨模态注意力融合日志与指标两类异构数据检测系统异常。
MorphQ:Qiskit 量子计算平台的蜕变测试
首个量子计算平台蜕变测试方法,用程序生成与变换暴露 Qiskit 崩溃并发现 13 个缺陷。
面向自动驾驶软件缺陷揭示的 Doppelgänger 测试生成
提出 DoppelTest,用遗传算法生成多车交通场景测试,为百度 Apollo 发现 123 个违规并归为 8 类缺陷。
AidUI:迈向用户界面中暗黑模式(Dark Patterns)的自动识别
提出 AidUI,利用计算机视觉与 NLP 从截图自动检测、分类并定位十类 UI 暗黑模式。
提交信息很重要:探究提交信息质量的影响与演化
构建结合提交信息与链接内容的分类器,揭示提交信息质量影响缺陷倾向并随时间下降。
为灰盒模糊测试学习种子自适应变异策略
提出 SEAMFUZZ,按种子聚类并学习自适应变异策略,提升灰盒模糊测试的路径发现与漏洞检测能力。
通过差分查询执行测试数据库系统
提出差分查询执行(DQE),利用相同谓词下不同 SQL 语句应访问相同行来检测 DBMS 的 SELECT、UPDATE、DELETE 逻辑错误。
迈向理解集成机器学习中的公平性及其组合
首个大规模研究集成学习中公平性如何组合,并给出168个模型基准与公平集成设计启示。
揭秘移动应用中第三方库的隐私政策
提出 ATPChecker,自动检测 Android 第三方库的隐私政策合规性及其与宿主应用的数据共享披露情况。
LogReducer:在内核中即时识别并减少日志热点
提出基于 eBPF 的非侵入式、语言无关日志削减框架,在线识别并降低日志热点开销。
ATM:基于测试代码相似性与演化搜索的黑盒测试用例最小化
提出ATM,仅依赖测试代码AST与遗传搜索,在给定预算下实现高效黑盒测试用例最小化。
双胞胎还是虚假朋友?可配置软件能耗与性能研究
通过文献综述与14个真实系统测量,发现可配置软件中性能与能耗的相关性取决于配置,仅少数配置项和函数决定能耗代理。
从 UI 测试中切分出 API 测试与 API 规范
提出从 UI 测试中切分生成 API 测试与 OpenAPI 规范,支持无规格 Web 应用的 API 级测试。
RESTful API 中批量赋值(mass assignment)漏洞的自动化黑盒测试
提出基于 OpenAPI 规范的黑盒方法,通过操作聚类识别只读字段并生成测试序列,自动检测 RESTful API 的批量赋值漏洞。
面向云系统的事件感知重复工单聚合
提出 iPACK,融合客户工单与云端事件的故障信息,实现云系统重复工单的精准聚合。
推荐任务给新人就足够了吗?理解 Good First Issues 中的指导
对964个仓库的48,402个GFI进行混合方法分析,揭示导师参与的结构、主题及其对新人贡献与留存的作用。
技术债务管理:成功软件交付的未来之路
综述技术债务管理在工业界与研究界的现状,提炼差距并描绘未来五年的管理愿景。
读它,别观看它:自动为缺陷录屏生成字幕
提出基于图像处理与卷积网络的轻量级方法 CAPdroid,自动为移动应用缺陷录屏生成用户操作字幕。
揭示多语言软件开发中的问题、挑战与解决方案
通过分析 Stack Overflow 上 586 个帖子,揭示多语言软件开发的问题、挑战与解决途径。
构建 ML 赋能软件中的社会技术反模式:来自前沿领导者的洞见
通过分析 MLOps 社区 66 小时从业者演讲,识别出 17 个 ML 生产化中的社会技术反模式并提出建议。
论日志与代码之间的时序关系
首次系统研究日志与代码的逻辑/语义时序关系,提出检测规则与工具 TempoLo,并在项目中确认修复时序不一致。
自主性是后天养成的偏好:探索开发者对 GitHub 机器人的偏好
通过访谈与情境调查揭示,GitHub 机器人的人性化与自主性如何影响开发者偏好,并建议提供可配置选项。
度量安全编码实践与文化:指向月亮的手指并非月亮
通过1100名开发者的调研,提出并量化安全编码实践与安全文化,发现二者并不总相关。
移动应用的上下文感知缺陷复现
提出 ScopeDroid,通过状态转移图与多模态神经匹配网络,从自然语言缺陷报告自动复现移动应用崩溃。
开发者在软件制品中检入机密信息面临哪些挑战?
通过分析 Stack Exchange 问题,归纳开发者管理检入机密的 27 项挑战与 13 项解决方案。
FedSlice:通过模型切片保护联邦学习模型免受恶意参与者攻击
提出 FedSlice,通过将服务器端模型切片分发给参与者,在联邦学习中以低开销防御多种恶意攻击。
通过项目式学习在高等教育中教授 MLOps
提出并实践以项目式学习教授 MLOps,覆盖 ML 组件从构建到部署的端到端生命周期。
理解与检测运行时配置更新缺陷
首次实证研究运行时配置更新缺陷(OCBug),并提出差分测试框架 Parachute 自动检测此类缺陷。
检测 Web 应用中的对话框相关键盘导航故障
提出自动检测 Web 应用中对话框相关键盘导航无障碍缺陷的方法,并在真实网页上验证有效性。
实用且高效的情感分析 API 模型抽取
提出 PEEP 框架,在仅黑盒查询条件下实用且高效地抽取情感分析 API 模型。
从组织到个人:职业程序员的精神活性物质使用
首个针对职业程序员工作场所精神活性物质使用的质性研究,揭示个人动机、影响及组织政策启示。
BARA:一种基于动态状态的严肃游戏用于需求获取教学
提出用有限状态机建模角色行为的动态状态严肃游戏BARA,并配可视化编辑器,用于需求获取教学与学习行为评估。
DUETCS:通过生成与检索的代码风格迁移
提出无监督代码风格迁移方法 DUETCS,分别学习风格与内容嵌入,结合生成与检索实现任意目标风格。
参与规则:公司为何以及如何参与 OSS
通过访谈 17 家公司,归纳企业参与 OSS 的四层动机与对应参与机制。
应用商店启发的需求获取:策略、收益与挑战
通过 58 名分析师的实验模拟,实证揭示应用商店启发的需求获取的策略、收益与挑战。
结对编程 ABC:年轻学习者中与性别相关的态度、行为与代码
通过139名8–14岁学生的Scratch结对编程课程,揭示性别组合在态度、角色遵守、代码探索与创意定制上的差异。
基于关系生成对抗网络的按需安全需求合成
本文提出用RelGAN自动合成安全需求规格,并在法院案件管理系统案例中验证其可行性与专家认可度。
SeeHow:基于动作感知视频分析的编程录屏工作流提取
提出SeeHow工具,利用计算机视觉从编程录屏中自动提取代码行编辑步骤与代码片段,生成可理解的工作流。
开发者的画像与经验如何影响其日志实践?——一项针对工业从业者的实证研究
通过混合方法实证揭示开发者画像与经验如何影响日志意图、关注点及其在代码中的落实。
Assertion Roulette 与 Eager Test 测试异味是否影响学生的故障排查与调试能力?
通过 96 名本科生的受控实验,发现测试异味(尤其 Assertion Roulette)会延长修复生产代码错误的时间。
论 Apache 孵化器项目中的自治理与剧变事件:一项实证研究
基于262个ASF孵化器项目数据,实证揭示治理制度语句与社技剧变间隔之间的时序互动如何影响OSS项目可持续性。
通过监测开发者在任务执行期间的行为来预测缺陷
提出基于开发者行为、心理物理与控制因素的缺陷预测模型,并通过实验证明其可媲美代码模型。
通过代码编辑与修订改进对编程模式知识的评估
研究发现代码编写会低估学生对编程模式的知识,结合编辑、修订与识别任务能更准确评估。
教会计算机科学学生更有效地传播科学发现
设计并实施软件工程科学传播研讨会,让学生为已发表论文制定并测试传播策略,并总结教学经验。
软件系统中的隐私弱点与漏洞研究
分析 CWE/CVE 中隐私相关漏洞覆盖不足,并提出 11 个新的通用隐私弱点以补充 CWE。
基于对抗域适应的跨域需求链接
提出对抗域适应方法RADIATION,在无目标域标注样本下实现跨域需求链接,F1显著超越基线。
从软件工程师的“弃子”策略前进:一种支持软件工作量估算防御的方法
提出基于谈判原则的防御视角与数字模拟,帮助软件工程师抵御估算压力并捍卫工作量估算。
Adhere:侵入式广告的自动检测与修复
提出 Adhere,检测违反 Better Ads Standards 的侵入式广告并给出修复建议。
Lejacon:一种面向 SGX 的轻量高效 Java 机密计算方法
提出 SCW 原则,将 Java 机密任务编译为原生 NCC 服务入 enclave,非机密代码留 JVM,实现轻量高效机密计算。
你获得云认证了吗?以体验式学习培养计算专业本科生备考云认证
报告一门采用体验式学习设计的课程,帮助计算专业本科生在学期内备考并通过 AWS-SAA 云认证。
开发者的视觉空间心理模型与程序理解
通过实验发现代码空间表示与视空间工作记忆对程序理解性能无显著影响,但不同理解活动的时间分配有显著差异。
通过自动化贡献摘要改进软件工程项目中的评分结果
提出 AutoVCS 算法与工具,自动汇总团队 GitHub 仓库中的个人贡献,提升助教评分一致性与反馈质量。
程序理解实验中有效性威胁的证据档案
通过系统文献检索与主题综合,为程序理解实验中最常报告的有效性威胁构建证据档案,揭示多数引用缺乏证据支持。
从规格文档中抽取关键词以规划安全机制
提出 VDocScan,从规格文档抽取关键词提前预测漏洞,以便在设计阶段集成安全机制。
开放设计案例研究——众包策展软件设计案例研究
提出 Open Design Case Study 平台,以众包方式策展并共享软件设计教学案例,支持设计解决方案讨论。
CS1 中每次击键时可编译状态的影响因素
通过两门 CS1 击键日志揭示可编译状态比例的影响因素,并发现其意识与考试成绩相关。
Stream API 是否受益于专门的调试设施?关于循环与流及特定调试器的受控实验
通过受控实验比较逐步调试器与流调试器,发现流调试器整体高效但效果受是否预先知道失败对象调节。
半自动、内联与协作式的网页-代码关联整理
提出 SALI,在 IDE 中半自动推荐并整理网页与源码位置的关联,便于协作复用。
BFTDETECTOR:面向数字内容服务的业务流篡改自动检测
提出自动化检测数字内容服务业务流篡改的方法,在真实网站发现315个漏洞,误报率0.49%。
说吧,记忆!通过分析历史事故增强软件测试初学者的敏感性
提出 FAIL 作业,用 STAMP 模型系统分析历史软件事故,以培养软件测试初学者的安全意识和软技能。
虚拟软件工程教育中基于归因的人格画像
通过探索性案例研究归纳出七种归因型人格画像,揭示虚拟教学环境下软件工程教师对学生的性格误判及其对师生关系的影响。
软件验证与测试中的认知反思
两阶段实证研究表明认知反思能力与人工识别代码缺陷相关,但与单元测试准确性无关。
软件复活:通过将历史软件现代化来发现编程珠玑
提出“软件复活”练习:让学习者在现代平台复活20年前的开源软件,通过修复与反思掌握编程珠玑。
面向可信未来生活的未来软件
通过民族志研究探讨新兴技术如何塑造可信未来,并追问未来软件应承载的价值、设计位置与协作方式。
可持续性是分层的:迈向更好的可持续软件工程理论
通过范围综述与定性元综合,提出可持续软件工程应被视为分层且多系统性的理论。
我属于这里吗?Linux 内核贡献者中虚拟社区感的建模
构建并检验开源开发者动机与虚拟社区感关系的理论模型,基于 Linux 内核社区调查数据。
“STILL AROUND”:资深女性软件开发者的经验与生存策略
通过14位资深女性开发者的访谈,揭示其应对年龄与性别歧视的生存策略与经验。
让女孩参与计算机科学:单性别跨学科班级有帮助吗?
通过跨学科数据科学在线课程干预,单性别班级女孩对计算机科学更开放、情感更积极。
“软件是软件工程中容易的部分”——大规模多团队毕业设计课程的经验与教训
设计大规模多团队毕业设计课程,让学生以公司式团队协作开发微服务并实现即插即用,总结教学经验与建议。
让软件工程学生面对高压项目:多样性重要吗?
通过三次对照实验发现,社会背景最影响学生感知的压力,年龄和工作经验最影响学习效果,但多样性对团队绩效无显著影响。
通过教学方法克服 DevOps 教育中的挑战
基于访谈分析识别 DevOps 教学方法及其与教育挑战的关系,发现项目式与协作式学习最关键。
开源软件入门作为大学课程:一项经验报告
报告北京大学开源软件入门课程经验:19名学生中16人成功贡献,5人留存,并比较不同项目选择的入门轨迹差异。
基于人物角色的软件工程学生研究项目评估:经验报告
通过人物角色与任务型作品集评估,将过程、态度等纳入软件工程学生研究项目评价。
大学内部的软件初创——培养行业就绪的毕业生
提出并评估大学内部软件初创(SDA)教学模式,通过真实生产级软件项目培养行业所需技能。
通过社区参与式学习与支持性网络利用软件工程教育中的多样性
介绍 INSPIRE 项目,以社区参与式学习和支持网络赋能弱势群体学生,促进软件工程教育多样性。
为人而设计:通过以用户为中心的服务设计教授敏捷开发
介绍一门以用户为中心、通过跨学科项目制课程教授敏捷软件开发的设计、演进与经验。
塑造培养计算专业学生职业身份的工具——行业视角
本文基于职业身份文献设计工具 DreamBig,并通过行业焦点小组验证其帮助计算专业学生建立职业身份的价值。
使用 Focus 机制在软件工程教育中个性化学习与反馈
提出 Focus 机制,将评估任务与课程单元间的反馈关联起来,以个性化软件工程教育中的学习反馈。
衡量软件工程毕业后成果的一项指标
提出 Career Velocity 指标,用校友目录与公开就业数据衡量学位项目对晋升高级软件工程职位速度的影响。
ICSE 2023 程序委员会共同主席致辞
ICSE 2023 程序委员会共同主席的欢迎致辞,介绍第 45 届 ICSE 的会议安排与议程。
ICSE 2023 大会主席致辞
ICSE 2023 大会主席的会议致辞,不包含研究贡献。
ICSE 2023 IEEE/ACM 45th International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET) 2023
ICSE 2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE) 2023
ICSE 2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE) 2023
ICSE 2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE) 2023
ICSE 2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE) 2023
2022244 篇 · Proceedings of the 44th International Conference on Software Engineering
Refty:基于细化类型的深度学习模型静态检查
提出基于细化类型的工具 Refty,用 SMT 求解算子约束,在运行前静态检测深度学习模型的类型错误。
学习减少分析型缺陷检测器中的误报
用 Transformer 模型识别静态分析误报,将分析精度提升 17.5%。
学习静态分析告警的概率模型
提出 BayeSmith,自动学习静态分析告警概率模型的结构与权重,以更好排序真实缺陷并减少误报。
ExAIS:神经网络框架的正确性规约与可执行语义
用 Prolog 为 TensorFlow 几乎所有层建立可执行语义,并据此实现 fuzzing 与模型验证。
DeepStability:深度学习中的数值稳定性问题与解决方案数据库
分析 PyTorch 与 TensorFlow 的数值不稳定问题,建立首个深度学习数值稳定性问题与解决方案数据库。
多样性驱动的自动形式化验证
提出 Diva,通过训练多样化的证明脚本模型并结合搜索,显著提升 Coq 定理的自动证明率。
面向 DNN 的基于 PAC 模型学习的实用鲁棒性分析
提出基于 PAC 模型学习的黑盒框架,将模型学习融入 DNN 局部鲁棒性分析,提升实用性与可扩展性。
Jigsaw
提出 Jigsaw,用程序分析与合成后处理增强大语言模型,实现基于多模态意图的 Pandas API 代码合成。
检测自动静态分析工具产生的误报
揭示自动静态分析误报检测中因数据泄漏与标签启发式导致性能被高估,并给出评估准则。
静态推断遇上深度学习
提出 Hityper,通过类型依赖图将静态推断规则与深度学习预测结合,迭代完成动态语言类型推断。
如果人类能看见,你的系统也应该能看见
提出以人类性能为基线的机器视觉组件可靠性需求,并自动检查模型是否满足。
取得平衡
提出自动学习调用图剪枝器,在静态空指针分析中兼顾减少误报边与保留真边,将误报率从73%降至23%。
数据驱动的循环界学习用于终止性分析
提出数据驱动的循环界学习方法,结合学习器与验证检查器,高效证明程序终止性。
Type4Py:基于深度相似度学习的 Python 类型推断
提出 Type4Py,用深度相似度学习的层次神经网络在类型空间中聚类,为 Python 参数、变量与返回值推断类型。
通过程序语义的高效概率建模实现故障定位
仅对程序值的正确性而非完整语义进行概率建模,在故障定位的有效性与可扩展性之间取得平衡。
VarCLR:变量名的对比学习语义表示
提出 VarCLR,用对比学习学习变量名语义表示,显著提升变量相似性任务性能。
释放编译器中间表示的力量以增强神经程序嵌入
利用 LLVM IR 与遗传算法搜索优化选项,增强神经程序嵌入质量并提升代码克隆检测性能。
使用机器学习 API 的软件的自动化测试
针对依赖 ML API 的软件,提出自动化测试需自动生成相关输入、判定输出并区分错误来源。
Difuzer:面向逻辑炸弹排查的可疑隐藏敏感操作检测
提出 Difuzer,结合静态分析与 One-Class SVM 异常检测,识别可疑隐藏敏感操作以辅助逻辑炸弹排查。
SymTuner:自动调优符号执行的外部参数
提出 SymTuner,通过在线学习自动调节符号执行的外部参数,提升分支覆盖与缺陷发现能力。
PUS:面向基于包含的指针分析的高效约束求解器
提出 PUS,用因果子图求解包含式指针分析约束,显著加速分析并发现多处真实缺陷。
使用预训练模型提升代码审查自动化
用预训练 T5 模型自动完成代码审查任务,并在更大更真实数据集上超越此前深度学习模型。
TOGA:基于神经网络的测试预言生成方法
提出基于 Transformer 的统一神经方法 TOGA,从焦点方法上下文推断异常与断言测试预言,精度提升 33%,发现 57 个真实缺陷。
构建 ML 赋能系统中的协作挑战
通过访谈 45 名从业者,揭示生产级 ML 系统开发中软件工程师与数据科学家协作的关键挑战、协作点与团队模式。
面向代码预训练模型的自然攻击
指出现有代码对抗攻击忽视自然性,并提出面向代码预训练模型的自然对抗攻击。
VulCNN
针对文本方法缺少语义、图方法难以扩展的矛盾,提出 VulCNN 以兼顾漏洞检测的准确性与可扩展性。
SPT-Code:面向源代码的序列到序列预训练模型
提出面向源代码的序列到序列预训练模型 SPT-Code,用三个专用预训练任务提升五项代码下游任务性能。
MVD:基于流敏感图神经网络的语句级内存相关漏洞检测
提出 MVD,用流敏感图神经网络联合嵌入代码与控制/数据流,实现语句级内存相关漏洞检测,显著降低误报。
论基于覆盖率的模糊测试器基准测试的可靠性
指出当模糊测试器均未发现漏洞时,基于覆盖率的基准评测可能不可靠,并探讨其代理指标有效性。
DEAR:支持多代码块、多语句一次性修复的深度学习自动程序修复
DEAR 结合频谱定位、深度学习与数据流分析定位缺陷,并用两级树状 LSTM 一次性修复跨代码块的多语句缺陷。
基于因果性的神经网络修复
提出基于因果性的神经网络修复技术CARE,通过定位问题神经元并优化参数来修复公平性、后门与安全缺陷。
论构建高质量训练数据集对神经代码搜索的重要性
提出首个面向代码搜索数据集的语义查询清洗框架,用规则与模型双重过滤数据,显著提升神经代码搜索性能。
数据科学流水线的艺术与实践
通过理论、小规模与大规模三类数据,提炼数据科学流水线的三种架构表示。
CodeFill
指出 IDE 代码补全受限于单 token 的语法或 NLP 方法,并提出 CodeFill 以应对其不足。
恶意 npm 包的实用自动化检测
提出 Amalfi,结合机器学习分类、源码可复现性校验与克隆检测,自动检测 npm 恶意包,一周发现 95 个未知恶意样本。
JuCify:统一 Android 应用中原生代码与字节码的代码模型
提出 JuCify,将 Android 原生代码与字节码调用图合并为统一模型,支撑静态分析发现跨原生代码的敏感行为与数据泄露。
连接预训练模型与下游任务以理解源代码
用语义保持变换扩充下游数据并配合课程学习微调,帮助预训练代码模型更好地适配新任务。
Muffin
提出 Muffin,利用模型模糊测试与训练阶段差分测试全面检测深度学习库缺陷,发现 39 个新 bug。
DeepFD:基于学习的深度学习程序故障诊断与定位
提出 DeepFD,用学习模型根据训练运行时特征诊断并定位深度学习程序中的故障,替代神经元修复与硬编码规则。
迈向可复现的深度学习模型训练
提出一套系统化方法(评判准则、统一框架与指南),通过记录回放与剖析修补技术实现深度学习模型的可复现训练。
DeepSTL
提出 DeepSTL,用文法合成数据训练 Transformer 神经翻译器,将英文非形式化需求自动翻译为信号时序逻辑 STL 规约。
EAGLE:基于等价图的深度学习库差分测试
提出 EAGLE,用等价图对单个深度学习库做差分测试,以检测不一致性 bug。
ReMoS:减少迁移学习中缺陷继承的相关模型切片技术
提出 ReMoS,通过基于神经元覆盖的相关模型切片,在迁移学习微调中减少教师模型缺陷继承。
深度学习供应链的探索性研究
通过构建并分析 TensorFlow 与 PyTorch 供应链,揭示其结构、演化与漏洞特征。
发现 Python ML 系统中的重复代码变更
首个针对大规模 Python ML 系统的细粒度重复代码变更挖掘,揭示 22 类模式组与四大趋势。
线性时序逻辑引导的灰盒模糊测试
提出 LTL-Fuzzer,将灰盒模糊测试扩展到寻找线性时序逻辑性质违反的反例。
SugarC:将真实世界 C 预处理器去糖为纯 C
设计并实现 SugarC,将真实 C 预处理器的编译期可变性去糖为纯 C 的运行时可变性,并同步类型检查。
评估与改进基于神经程序平滑的模糊测试
通过大规模基准评测揭示神经程序平滑模糊测试的不稳定性,并提出 PreFuzz 显著提升其边覆盖率。
What the fork?——npm 包生态中的套壳克隆
提出 UNWRAPPER,在 npm 全生态中快速检测隐藏的“套壳克隆”包,并揭示其携带未修复漏洞的安全风险。
Aper:检测 Android 运行时权限问题的静态分析器
提出静态分析器 Aper,通过到达定义与支配分析检测 Android 异步权限管理和权限规范演化引发的 ARP 错误。
Nalin:自动检测名称-值不一致
提出 Nalin,结合动态分析与神经网络分类器,自动检测 Python 程序中变量名与运行时值不一致的问题。
微信小程序中的缺陷特征刻画与检测
系统刻画微信小程序在执行环境、生命周期和异步机制等方面的缺陷,并研究其检测方法。
可配置软件系统中的因果性
提出特征因果性,用反事实推理识别引发系统性质的特征及其交互,并给出计算因果解释的算法。
AI 感知系统的语义图像模糊测试
提出 semSensFuzz,通过语义变异“真实传感器读数+真值解释”测试用例来模糊测试感知系统。
PropR:基于属性的程序修复
将属性测试与 Haskell 类型系统引入自动程序修复,降低过拟合补丁比例并加快修复速度。
NPEX:无需测试的 Java 空指针异常修复技术
提出 NPEX,无需测试用例,通过挖掘空值处理模式推断修复规约来修复 Java NPE。
将软件验证分解为现成组件
提出把软件验证技术拆分为更小、更专用的可复用现成组件,以促进复用与负载分配。
WebAssembly 二进制的静态保持栈的过程内切片
提出一种静态过程内后向切片方法,可在 WebAssembly 二进制上做依赖分析并保持栈合法性。
基于领域知识图谱的冲突感知 Python 兼容运行时环境推断
提出 PyCRE,利用领域知识图谱与冲突感知启发式依赖求解,自动推断 Python 兼容运行时环境。
DescribeCtx:面向敏感行为的上下文感知描述合成
提出 DescribeCtx,融合隐私政策、调用图与 GUI 上下文,用神经机器翻译为 Android 应用的敏感行为生成应用特定描述。
SapientML
提出 SapientML,通过三阶段分治程序合成从语料中学习,为新的预测任务高效生成高质量 ML 流水线。
EREBA:面向自适应神经网络能量鲁棒性的黑盒测试
提出首个面向自适应神经网络能量鲁棒性的黑盒测试方法,可生成能耗激增输入。
ProMal:结合静态、动态与机器学习的移动应用窗口转换图构建
提出 ProMal,融合静态分析、动态分析与机器学习,为移动应用构建精确的窗口转换图(WTG)。
PReach:程序语句概率可达性的启发式分析
提出工具 PReach,用分支选择率、依赖分析、抽象解释与马尔可夫链启发式近似程序语句可达概率,识别难达语句。
使用细粒度代码模式检索数据约束实现
提出用细粒度代码模式定位源代码中的数据约束实现,以支持业务规则变更。
合成 GR(1) 控制器的动态更新
提出并求解 GR(1) 合成控制器的动态更新问题,用桥接控制器实现运行中安全切换至新规约。
基于肯定性证据的精确除零检测
提出依赖来源证据与边界证据的静态分析,在安全证明失败时主动寻找可触发线索以抑制除零误报。
使用部分库的快速且精确的应用代码分析
提出 QueryMax,通过选取与应用查询最相关的部分库,在不损失精度的情况下显著加速应用代码静态分析。
DeepAnalyze:面向大规模崩溃定位的多任务序列标注方法
提出 DeepAnalyze,用多任务序列标注从栈跟踪中定位崩溃归责帧,并可跨应用少样本迁移。
化学反应网络中基于程序不变量的推断与测试生成
提出 ChemFlow,从化学反应网络模型中推断不变量,用于测试生成与模型验证。
通过歧义翻译隐藏关键程序组件
提出 Ambitr:用歧义翻译器仅在正确密钥下生成关键组件,使分析无法识别隐藏信息。
基于深度学习的日志异常检测
系统再评估五种深度学习日志异常检测模型,发现评测中的数据因素显著影响结果,该问题远未解决。
基于执行反馈反向传播的神经程序修复
将编译与测试执行结果引入损失函数进行反向传播,改进基于NMT的自动程序修复,提高补丁可编译性与修复成功率。
DeepTraLog
提出 DeepTraLog,用统一图表示融合 trace 与日志事件,并基于 GGNN 和 deep SVDD 检测微服务异常。
测试的免费午餐
提出 FreeFuzz,通过挖掘开源代码追踪动态信息来模糊测试深度学习库,发现 49 个缺陷。
通过依赖树揭秘 NPM 生态系统中的漏洞传播及其演化
提出基于知识图谱的依赖解析与依赖树分析,揭示 NPM 漏洞传播路径与演化并提出修复方法。
它们捕捉到了什么?——对预训练代码语言模型的结构分析
从注意力、词嵌入探针与句法树归纳三方面分析,揭示预训练代码模型能捕捉代码句法结构。
利用深度语义特征与迁移知识改进故障定位与程序修复
提出TRANSFER,用深度语义特征与开源迁移知识提升故障定位和程序修复性能。
AutoTransform:面向代码审查的自动代码变换
提出 AutoTransform,结合 BPE 与 Transformer NMT 自动将代码变换为审查通过的版本,显著超越先前工作。
程序修复中的信任增强问题
通过调研100余名开发者并定量评估现有测试套件修复工具,揭示增强自动补丁信任的需求与差距。
论神经代码摘要的评估
系统评估5个神经代码摘要模型在BLEU变体、预处理与数据集上的表现,揭示关键因素并给出评估建议。
FIRA
针对自动提交信息生成,指出现有方法受粗粒度代码变更表示限制,并提出 FIRA。
面向 DNN 使能系统的高效在线测试:代理辅助与多目标优化方法
提出 SAMOTA,用代理模型辅助多目标搜索生成测试数据,高效检测 DNN 使能系统在线测试中的安全违规。
一种统御所有模糊测试的策略
首次实证研究 Havoc 模糊测试变异策略,并提出基于多臂老虎机的 HavocMAB,显著提升边缘覆盖。
V-SZZ
针对 NVD 中 CVE 版本信息不可靠的问题,概述基于 SZZ 评估受漏洞影响软件版本的工作。
NeuronFair:深度神经网络公平性测试框架
提出可解释、高效且通用的 DNN 公平性测试框架 NeuronFair,利用解释结果引导生成更多样化的公平性违规实例。
从公共 GitHub 仓库中自动检测密码泄露
提出 PassFinder,利用深度神经网络检测 GitHub 代码中的文本密码泄露,并完成首次大规模纵向分析。
面向机器学习软件公平性的训练数据调试
提出通过调试训练数据来缓解机器学习软件因敏感特征导致的不公平性。
DeepDiagnosis:DNN 程序调试与故障定位
提出 DeepDiagnosis,在 DNN 训练中定位故障、报告错误症状并给出可操作修复建议。
WindRanger
针对定向灰盒模糊测试,指出现有种子距离计算忽略基本块重要性与偏差基本块的问题。
面向JVM测试的历史驱动测试程序合成
提出首个历史驱动的测试程序合成技术JavaTailor,通过复用历史缺陷代码片段生成多样测试程序以暴露JVM缺陷。
机器学习库的公平性感知配置
提出 Parfait-ML,用搜索式测试与统计调试寻找超参数配置,在不牺牲精度的前提下改善 ML 公平性。
使用深度学习生成完整的日志语句
提出 LANCE,基于 T5 为 Java 方法自动决定日志语句的插入位置、日志级别并生成日志消息。
μAFL:面向微控制器固件的硬件在环模糊测试
提出硬件在环的微控制器固件模糊测试框架 μAFL,用 ARM ETM/DWT 收集覆盖率并发现多个零日漏洞。
一种面向故障定位的通用数据增强方法
提出一种通用数据增强方法,缓解故障定位中输入数据高维且极不平衡的问题,以提升定位技术有效性。
AST-Trans:面向代码摘要的树结构注意力编码
提出 AST-Trans,利用祖先-后代与兄弟关系施加树结构注意力编码 AST,实现更准更快的代码摘要。
需求中回指歧义的自动化处理
并行评估六种 NLP/ML 方案,实现需求回指歧义检测与解释,最佳检测召回 100%、解释成功率约 98%。
基于 BERT 的快速变更集缺陷定位
面向变更集的缺陷定位,利用 BERT 语义匹配弥合词法鸿沟,并解决其计算开销以实现快速响应。
深度神经网络的自适应测试选择
针对 DNN 测试与优化中标注数据昂贵的问题,提出面向深度神经网络的自适应测试选择方法。
基于上下文感知代码翻译的代码搜索
提出 TranCS,通过将代码翻译为自然语言并在机器指令级收集执行上下文,结合共享词表嵌入,显著提升代码搜索效果。
基于信息检索的自动化断言生成及其与深度学习的集成
首次将信息检索用于单元测试断言生成,并提出与深度学习结合的集成方法,效果优于纯深度学习基线。
从业者对自动化代码注释生成的期望
通过访谈与问卷调研从业者对自动注释生成的期望,并与 2010–2020 年顶会研究现状对比,指出研究应努力的方向。
通过同位素替换改进机器翻译系统
提出同位素替换方法,通过可控的词替换改进机器翻译系统,并缓解替换影响难控的问题。
基于元学习的跨领域深度代码搜索
提出 CDCS,用元学习将通用语言预训练模型迁移到数据稀缺的领域特定语言,实现高效跨领域代码搜索。
ModX:面向语义级第三方库检测的程序模块化框架
提出 ModX,通过程序模块化与句法/语义特征度量,在细粒度模块层面检测完全与部分引入的第三方库。
基于模式草图的自适应在线服务系统性能异常检测
提出 ADSketch,用模式草图实现可解释且能自适应服务变化的在线性能异常检测。
少即是多
通过150人实验发现,仅要求审查者关注安全即可将漏洞发现概率提高八倍,而安全清单无显著额外增益。
CLEAR
针对自动 API 推荐中查询序列语义丢失与词汇相似查询难区分的问题,论文提出 CLEAR。
RoPGen:鲁棒编码风格模式生成
提出 RoPGen,通过在对抗训练中结合数据与梯度增强,学习难以模仿的编码风格模式以提升深度代码作者归属的鲁棒性。
在GitHub开源项目中推荐Good First Issue
提出RecGFI,利用多维度特征和XGBoost为开源项目推荐适合新手的good first issue。
GraphFuzz
GraphFuzz:将函数调用序列建模为数据流图、支持图变异的模糊测试器,可自动测试底层库 API。
BeDivFuzz:面向生成式模糊测试的行为多样性反馈驱动技术
提出反馈驱动的生成式模糊测试技术 BeDivFuzz,通过区分保持/改变结构的变异并偏向有效性与行为多样性,提升分支执行分布的均匀性。
FairNeuron:面向公平性的 DNN 模型自动修复
提出 FairNeuron,通过检测准确率与公平性优化冲突的神经元并选择性 dropout,自动修复 DNN 以平衡二者。
使用强化学习对电子游戏进行负载测试
提出用强化学习训练智能体,在模拟人类游玩的同时对电子游戏进行负载测试,识别帧率下降区域。
Rust 的学习与编程挑战
研究 Rust 因编译期安全检查而在学习和编程实践中带来的挑战。
利用全局上下文学习推荐方法名
提出 GTNM,融合局部上下文、项目特定上下文和文档,显著提升方法名推荐效果。
模糊测试类规格
提出用模糊测试推断类规格的方法,以可扩展地支持不同断言语言与算子。
从持续集成服务八年运营数据中获得的经验教训
通过分析 CircleCI 八年 2220 万次构建,从服务提供方视角寻找持续集成服务的改进机会。
基于周期性调度的受控并发测试
提出周期性调度的受控并发测试技术 Period,系统探索线程交错以更高效检测并发缺陷。
控制参数有害
提出学习引导的搜索系统,检测无人机控制参数中的错误配置组合,并推导可行参数范围。
面向不可复现构建的自动补丁生成
提出 RepFix,结合追踪细粒度定位与历史补丁生成,自动修复不可复现构建问题。
开源软件中代码复用导致的孤儿漏洞的范围
指出现有研究尚未在大规模开源代码库中考察代码复用如何传播源项目已修复的漏洞(孤儿漏洞)。
Android 测试中测试替身的使用
通过大规模实证研究揭示 Android 应用中测试替身的创建与使用方式、与 Java 测试替身的差异及潜在测试坏味。
Pull Request 中的机器人
通过设计虚构与 32 名从业者提炼 22 条缓解 PR 中机器人噪声与信息过载的设计策略,并提出机器人中介与专用交互区域构想。
量化访问控制策略的宽松程度
提出定量差分策略分析框架,用模型计数约束求解器量化访问控制策略的相对宽松程度。
论可配置软件系统的性能调试
以人为中心地识别开发者调试可配置软件系统性能时的信息需求,并构建与评估定制工具。
基于知识的 Python 程序环境依赖推断
提出基于知识推断 Python 程序对解释器与系统库的环境依赖,补全第三方包依赖分析。
面向语言无关的棕色构建检测
提出基于构建日志文本相似度的语言无关棕色构建早期检测方法,并在工业项目上验证。
SnR
针对代码片段因语法不完整且缺少依赖信息而难以编译使用的问题,提出 SnR 工具。
通过测试生成修复顺序依赖的 flaky 测试
提出通过生成测试(作为 cleaner)来修复因共享状态污染导致的顺序依赖 flaky 测试,无需测试套件已有 cleaner。
DeepState
提出 DeepState,面向 RNN 驱动的软件系统,缓解现有 CNN 覆盖准则难以迁移与标注数据成本高的问题。
FlakiMe:测试不稳定性评估与实验平台
提出 FlakiMe 平台,可向测试套件行为中注入可控程度的不稳定性,以实验评估 flaky test 对测试技术的影响。
推断并应用类型变更
TC-Infer 从开源项目版本历史中推断类型变更的重写规则,并用于自动化重构,大幅提升类型变更的准确率。
BuildSheriff:面向持续集成的变更感知测试失败分诊方法
提出变更感知的 BuildSheriff,将 CI 构建中同一根因导致的测试失败聚类,降低诊断成本。
烂苹果坏一筐
系统分析绕过 Google Play 防御的 Android 恶意软件,归纳其载荷、激活条件与隐藏技术,并指出现有检测工具的不足。
迈向即时提升补丁执行效率
提出 SeAPR,利用 APR 过程中早先的补丁执行信息动态提升现有自动程序修复技术的补丁验证效率。
ARCLIN
提出无需人工标注的 ARCLIN,从论坛非结构化文本中识别并链接 API 提及,在 Py-mention 上较启发式方法提升 8%。
ASPA:支持编程课程学习与持续反馈的静态分析工具
通过236名学生的实证研究验证ASPA静态分析工具能辅助编程学习、持续反馈并提升成绩。
BugListener:从社区实时聊天中识别与合成缺陷报告
提出 BugListener,用神经网络与迁移学习从社区实时聊天中识别并合成缺陷报告。
迈向面向非完整程序的双向实时编程
指出双向实时编程系统无法处理含代码空白的非完整程序这一关键局限。
DrAsync
识别8种JavaScript Promise反模式,提出轻量静态分析并集成动态分析的可视化工具。
DeFault
提出 DeFault,旨在实现大规模崩溃场景下快速、忠实且高效的分诊。
关于软件配置增量构建的优势与局限
探索增量构建软件配置的可行性、性能、正确性及最优构建顺序,并在五个真实系统上评估。
生成并可视化追踪链接解释
提出NLP流水线与解释界面,为深度学习生成的追踪链接生成概念定义和关系解释,并用用户研究验证其提升非专家理解与核验能力。
变化是唯一的不变
指出现有安全动态软件更新研究仅覆盖同步事务模型,无法支持异步事务场景下的高频在线更新。
基于摘要推断的 ORM 控制器验证
为 ORM 控制器推断关系代数摘要,并借助现成关系代数求解器验证数据库应用性质。
ASPA:支持编程课程学习与持续反馈的静态分析器——一项实证验证
通过236名学生的实证研究,验证ASPA静态分析器在编程基础课程中促进学习与持续反馈的有效性。
用基于故障的数据采集修复脑机接口
提出部分测试预言检测故障、切片函数定位故障,并通过定向数据采集与再训练显著降低 BCI 故障率。
面向软件工程的多语言训练
利用不同语言中同功能代码与标识符命名相似性,以多语言数据增强软件工程任务性能。
绿色人工智能
指出现代软件中 AI/DL 能耗高且绿色研究不足,呼吁关注其能源、环境与经济成本。
评估日志消息模板识别技术准确性的指南
提出三条评估日志模板识别准确性的指南,并据此重新评估14种技术,得出比以往更悲观的结论。
什么构成一个好的提交信息?
定义了“好的提交信息”标准,分析近1600条提交发现约44%可改进,并构建表达模式分类体系,探索自动识别。
Morest:基于动态属性图的 RESTful API 黑盒测试技术
提出 Morest,用动态更新的 RESTful 服务属性图建模 API 行为并引导调用序列生成,显著提升黑盒测试的覆盖率与缺陷检出能力。
“你是没看到我的评论还是什么?”
通过对100个GitHub issue讨论的定性分析,揭示开源社区毒性的独特表现形式与作者构成。
远程优先与混合软件团队中协调的扎根理论
通过一年参与观察扎根理论,揭示远程/混合办公如何改变软件团队协调,并影响项目成败与开发流程。
GIFdroid:从可视化缺陷报告中自动重放执行轨迹
用图像处理从录屏缺陷报告中抽取关键帧并映射到 GUI 状态图,自动生成可复现缺陷的执行轨迹。
RESTful API 的组合测试
提出 RestCT,仅依据 Swagger 规约自动建模并生成组合测试用例,覆盖操作间与参数间交互,发现 8 个新缺陷。
大规模分析用户对移动应用隐私的看法
提出基于NLP的大规模方法,从2.87亿应用评论中提取并归纳移动应用隐私痛点。
通过驯服应用固有冲突来利用去中心化区块链上智能合约的并行性
分析以太坊历史交易轨迹,指出应用固有冲突是并行瓶颈,并用分区计数器、可交换指令与确定性中止的 OCC 调度器将并行加速上限翻倍至 18 倍。
以变异体优先级排序指导变异测试
提出面向工业实践的变异体优先级排序方法,指导开发者迭代编写测试,而非计算变异充分性。
使用等价查询自动检测数据库系统中的性能缺陷
提出 Amoeba,通过构造语义等价查询对并比较响应时间来自动检测 DBMS 中的性能缺陷。
将卷积神经网络分解为可复用且可替换的模块
提出将CNN按输出类分解为模块,使其可复用、替换,并显著减少重训成本与碳排放。
使用关键词辅助主题模型对移动应用评论进行领域特定分析
提出一种全自动无监督的关键词辅助主题模型方法,从移动应用评论中抽取领域特定有用信息。
你的应用在哪里让用户感到沮丧?
提出 SIRA,用 BERT+Attr-CRF 从移动应用评论中细粒度提取、聚类并可视化问题特征。
面向已发布 Android 应用兼容性问题的自动修复
提出 RepairDroid,通过通用补丁描述语言与模板在字节码层面自动修复已发布 Android 应用的多种兼容性问题。
路径转移揭示更多信息
提出 Truzz,通过识别校验相关字节并利用路径转移优化种子调度,提升灰盒模糊测试的覆盖率与漏洞发现能力。
通过非幂等结果测试预防 flaky 测试
提出用非幂等结果测试提前预防 flaky 测试,避免其削弱回归测试的有效性。
Android 固件生态的大规模安全测量
基于 6261 个固件镜像与 602 个 CVE 的大规模测量,揭示 Android 固件生态的补丁延迟、缺失与预装应用漏洞。
CONFETTI:模糊测试中的全局提示技术
提出全局提示技术,让模糊测试将有趣字节注入任意输入的任意位置,从而提升分支覆盖与缺陷发现能力。
为评审者推荐建模评审历史
提出基于超图的评审历史建模方法与推荐器 HGRec,刻画一个 PR 多评审者的高阶关系,提高准确率与推荐多样性。
利用输入净化实施正则表达式拒绝服务(ReDoS)攻击
首次黑盒测量真实 Web 服务中由公开正则净化逻辑导致的 ReDoS 漏洞,并推动修复与防御。
Nessie:支持 API 调用嵌套与异步回调的反馈导向单元测试生成
提出首个支持 API 调用嵌套并测试异步回调的反馈导向单元测试生成器 Nessie。
利用 Stack Overflow 进行调试
通过 40 人研究揭示通用与语言经验如何影响程序员用 Stack Overflow 调试搜索的成效。
DevOps 教育
通过访谈14位DevOps教育者,提炼教学挑战、建议及其关联冲突,为课程设计提供依据。
你能帮帮我吗?
通过混合式夏令营向14名自闭症高中生教授团队合作与编程,并总结教育者建议。
揭秘内核模糊测试中的依赖挑战
通过测量研究揭示内核模糊测试中依赖挑战的普遍性,并指出其只是覆盖率不足的表象而非根因。
基于语义与行为信息的在线告警摘要
提出OAS,用监督学习融合告警的语义与行为信息,在线判定告警关联并生成摘要。
软件团队中生产力感知的探索性研究
通过对五个软件团队三个月的调查,发现个人生产力感知是团队生产力感知的最强预测因素。
面向性能调优的多意图感知配置选择
提出多意图感知的配置选择方法,利用配置文档预选性能相关参数并提示对可靠性、安全等非性能意图的副作用。
Manas:基于 GitHub 模型仓库的神经架构搜索
提出 Manas,从 GitHub 模型库选择初始 CNN 并用常见层模式变异进行 NAS,在相同时间内得到更小更快的模型。
编程时的停顿
研究入门编程学生的输入停顿行为,发现停顿频率与课程表现负相关,并聚类出不同学习行为群体。
揭秘 Android non-SDK API
梳理 Android non-SDK API 的调用方式、兼容性风险及 Android 9 起的限制与检查机制。
面向程序员在线调查中筛选问题的时间限制测试
研究在程序员在线调查筛选问题中引入时间限制,以在保持可靠性的同时缩短筛选时间。
PerfSig:多模态性能缺陷签名提取工具
提出多模态性能缺陷签名提取工具 PerfSig,通过跨数据因果分析定位根因函数。
使用 Stack Overflow 调试:新手与专家程序员的网络搜索行为
通过 40 名程序员的用户研究,揭示通用与语言特定经验如何影响调试时的 Stack Overflow 搜索效率与成功率。
R2Z2
聚焦浏览器渲染回归:网页视觉外观无预定义正确性,自动检测异常极具挑战。
OJXPerf:面向托管语言重复对象的内存膨胀剖析器
提出轻量采样剖析器 OJXPerf,借助硬件 PMU 与调试寄存器概率性识别同类型重复对象,指导 Java 程序消除内存膨胀。
响应变化,否则死亡
提出基于《饥荒联机版》的在线 Scrum 模拟,并在多校分布式团队教学中验证其积极学习效果。
将黑客松整合进在线网络安全课程
研究将系列在线黑客松整合进在线网络安全课程,并评估其对协作与学习成效的影响。
Nufix
针对 .NET 生态中包依赖约束被违反的依赖迷宫问题,提出自动修复工具 Nufix(摘要未展开具体方法)。
一种基于扎根理论的软件攻击面刻画方法
通过扎根理论分析1444份CVE/CWE漏洞报告,构建含254个新组件的软件攻击面分类模型。
基于搜索的真实软件产品线多样性采样
提出基于距离度量与新颖性搜索的可扩展多样性采样策略,能从大规模真实软件产品线中生成多样有效配置样本。
ITSS:交互式编程教程环境
提出并评估了浏览器内集成式 ITSS 环境,通过记录与回放作者交互动作来创作可交互编程教程。
DevOps 教育:关于挑战与建议的访谈研究
通过对 14 位 DevOps 教师的访谈,系统梳理 DevOps 教学中的 83 项挑战、185 条建议及其关联与冲突。
垃圾回收让 Rust 更易用
提出可选的、基于库的 Rust 垃圾回收器 Bronze,并通过大规模随机对照实验证明其能降低复杂别名任务的使用难度。
ShellFusion
针对 shell 命令难按任务检索且现有教程覆盖有限的问题,提出 ShellFusion 以改进命令教程与检索。
Android 应用手表伴侣的一键式合成
提出 Jigsaw,利用示例编程、版本空间代数与约束求解,一键合成 Android 应用的手表伴侣应用。
大数据 = 大洞见?
通过构建最大 curated GitHub 语料,揭示团队规模与开发者生产力研究的分歧及大数据分析陷阱。
写一行代码
提出基于正则表达式匹配与字符串补全提示的 CS1 单行代码自动评分与反馈方法,并在四年课程中验证其高精度与教学效果。
一种可扩展的 t-wise 覆盖估计器
提出可扩展的 t-wise 覆盖估计方法,用于约束下高 t 值组合测试覆盖评估。
阅读以编写代码
介绍加州大学欧文分校硕士课程“逆向工程与建模”,教授阅读大型代码库以有效贡献的方法。
命令式与声明式集合处理
随机对照实验表明,Java Stream API 的声明式集合代码在理解速度与正确性上显著优于传统循环。
编程中的停顿:来自击键分析的洞见
通过击键分析研究编程初学者的停顿行为,发现停顿频率与课程表现负相关,并可通过聚类区分学生群体。
毕业设计课程中的学生自筹项目:反思与经验教训
报告软件工程本科生自筹一年期毕业设计项目的流程、实践、时间线与经验教训。
FADATest:面向动态二进制翻译系统的自适应性能回归测试
提出 FADATest,自动生成自适应测试程序,实现动态二进制翻译系统的高效性能回归测试。
Write a Line:在 CS1 课程中用于自学的带答案模板与字符串补全提示的测验
报告基于正则表达式答案模板与字符串补全提示的 CS1 形成性测验,单行代码判定精度/召回率超 99%,并显著减少教师答疑。
ITSS:面向编程教程的交互式网页创作与回放集成环境
提出浏览器内集成的交互式编程教程创作与回放环境 ITSS,记录并重放作者操作以提升学习交互性。
为写代码而阅读:逆向工程与建模课程的经验报告
报告了一门“为写代码而阅读”课程的设计与教学经验,帮助学生熟悉大型代码库并做出贡献。
设计发散思维与创造性问题求解考试
提出并实践了面向软件工程课程的发散思维、创造性问题求解期末考试设计,兼顾知识评估与考试诚信。
课前 GitHub 贡献能预测学生团队的成功吗?
首个研究学生课前 GitHub 贡献与团队项目表现的关系,识别公共提交、仓库数及特定语言仓库规模等关联因素。
培养软件工程师开发机器人系统
设计并交付一门课程,帮助软件工程学生应对机器人系统开发的独特挑战。
基于遗传算法的解释引导公平性测试
所给摘要提出面向 HPC 的 Python 工作流,以语言扩展和数据中心 IR 自动优化实现跨 CPU/GPU/FPGA 可移植高性能(与标题主题不一致)。
敏捷软件开发团队中有效领导力的构成因素是什么?
通过对13位敏捷领导者的访谈,提出敏捷领导力是团队属性而非角色,取决于动态共享、归属感与文化平衡。
这简直太棒了!
通过大规模混合方法实证研究,揭示推文对开源项目获取新 star 与贡献者的因果影响及影响因素。
GitHub Sponsors 研究
通过混合方法研究 GitHub Sponsors,揭示受捐赠 OSS 开发者的特征及开发者对个人捐赠的看法。
让乐趣保持鲜活
报告面向高中生的全远程编码训练营如何通过改编线下活动维持乐趣并保持产品质量。
把大麻问题说清楚:程序员编程时使用大麻调查
首次大规模调查程序员编程时使用大麻的普遍性、动机与感知,揭示非医疗性使用及其对行业政策的影响。
将用户体验集成到敏捷开发中
报告研究生课程中将 Lean UX 融入 Scrum 并采用游戏化提升参与度的教学实践与六点经验。
软件工程研究中的社会科学理论
系统调查软件工程五大期刊13年间对社会科学理论的使用,发现使用率极低且理论检验不足。
一块积木叠在另一块上
将 Lego Scrum 工作坊迁移到 Minetest 并分享远程教学经验与材料。
CRS:混合课程推荐系统
提出并问卷评估了一个结合数据挖掘、NLP 与推荐算法的混合课程推荐系统,服务软件工程学生与教师。
让乐趣延续:在线编程训练营的经验报告
报告将线下编程训练营转为全在线版本的经验,证明在线版能保持趣味性并达到同等产品质量与过程水平。
把安全摆上桌面
提出并可行性检验一套评估远程安全桌面游戏对开发者安全开发自我效能影响的方法。
“你能帮帮我吗?”——自闭症高中生游戏编程营地中的团队合作经验报告
报告面向14名自闭症高中生的混合式游戏编程营地,分享团队合作教学经验与建议。
毕业设计课程中的学生自主赞助项目
报告本科软件工程毕业设计中让学生自主赞助一年期项目、完成产品发现与创业实践的经验。
探索入门编程课程中的多样性:一份经验报告
通过教学改革与经验分析,报告非计算机专业入门编程课程中多样性因素的影响,并发现协作式教学对女性及有语言障碍学生有正向作用。
将用户体验融入敏捷:关于精益 UX 与 Scrum 的经验报告
报告研究生课程中整合 Lean UX 与 Scrum 并以游戏化提升参与度的经验,总结六条教训。
CRS——面向软件工程教育的混合课程推荐系统
提出混合课程推荐系统 CRS,用数据挖掘、NLP 与推荐系统为软件工程学生和教师提供课程、职业、技能与学习资源建议。
基于项目的软件工程与犯罪学学生协作:构建应用程序以理解刑事司法系统中的种族不公
报告软件工程与犯罪学跨学科课程协作,学生共建应用帮助社区理解刑事司法中的种族不公。
软件工程与犯罪学学生之间的项目式协作
报告软件工程与犯罪学学生通过项目式协作,将计算思维与软件工程方法用于理解刑事司法中的种族不公并推动改革的教学实践。
积木叠积木:使用 Minetest 教授 Scrum
报告将线下 Lego Scrum 教学工作坊迁移到开源沙盒游戏 Minetest 的经验、挑战与反思。
使用 UML 引导软件设计学习中的同伴反馈
研究软件设计课程中同伴反馈的类型与使用,提出促进有效反馈的指南。
在线软件测试与持续集成中的同伴教学——一项复现研究
复现并扩展同伴教学在在线软件测试与持续集成课程中的研究,发现其促进学习并显著改善学生态度。
全球课堂中的全球软件工程
通过三国三校21名学生的十天分布式IoT项目,总结全球软件工程教学的实施建议。
Eflect
提出能耗虚拟化框架 Eflect,在应用层解耦共运行应用的能耗,使每个应用仅感知自身能耗。
循证软件工程培训效果的纵向案例研究
设计并纵向评估一门面向大学生的循证软件工程培训课程,发现其能持续传授技能并改变学员态度与行为。
数据建模的学术与产业培训
比较学术与产业概念数据建模培训的异同,提出通过纠正基础建模错误提升双方培训质量并促进方法交换。
从细粒度日志数据中探寻心流
提出用编程环境细粒度日志非侵入式测量与心流相关的情感因素,并通过入门编程课程试点研究检验日志指标与问卷的关系。
响应变化或死亡:面向分布式团队的教育性 Scrum 模拟
提出并评估基于《饥荒联机版》的在线 Scrum 模拟,用于分布式团队教学。
将安全摆上桌面:安全桌面游戏的数字化及其挑战性余味
提出并可行性检验一套评估远程安全桌面游戏干预对开发者安全开发自我效能影响的方法,揭示其数字化实施挑战。
面向数据建模的学术与产业培训:互利共赢的设想
通过分析概念数据建模中的常见错误,提出学术与产业培训互鉴的改进思路。
ICSE 2022 IEEE/ACM 44th International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET) 2022
ICSE 2022 IEEE/ACM 44th International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET) 2022
ICSE 2022 IEEE/ACM 44th International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET) 2022
2021179 篇 · 2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE)
机器学习云 API 是否被正确使用?
人工研究 360 个使用 ML 云 API 的开源应用,发现 70% 存在误用,归纳出 8 类反模式并实现自动检查器。
深度神经网络的可扩展定量验证
提出面向 DNN 的可扩展定量验证框架 PROVERO,用测试驱动方式证明概率性质,并可验证大规模网络的鲁棒性。
数据驱动的可证可靠侧信道分析合成
提出数据驱动方法自动合成可证可靠的侧信道静态分析器,并用查询包含检查保证规则可靠性。
PyCG:Python 中的实用调用图生成
提出静态跨过程分析生成 Python 调用图,精度约 99.2%,千行代码平均 0.38 秒。
通过指称透明性测试机器翻译
提出指称透明输入(RTI)方法并实现 Purity,用于检测机器翻译错误,在 Google 与 Bing 上高精度发现大量误译。
部署中的深度神经网络自检
提出 SelfChecker,通过检查 DNN 内部层特征与最终预测的一致性,在部署中触发错误报警并给出备选预测。
归约 DNN 性质以支持对抗攻击的证伪
提出保语义归约,将多类 DNN 安全性质统一转化为可用对抗攻击求解的等价正确性问题。
内联汇编的接口合规性:自动检查、补丁与精化
提出首个自动形式化检查 GNU 内联汇编接口合规性的技术 RUSTInA,并能为部分问题生成经过证明的补丁与精化。
CURE:面向自动程序修复的代码感知神经机器翻译
提出代码感知的 NMT 程序修复技术,通过代码预训练、子词切分与代码感知搜索修复更多真实缺陷。
基于代码覆盖率表示学习的故障定位
提出 DeepRL4FL,将故障定位视为图像模式识别,融合代码覆盖率、数据依赖与源码表示学习,显著提升语句级与方法级定位精度。
InferCode:通过预测子树的自监督代码表示学习
提出 InferCode,以 AST 上下文中自动识别的子树为预测目标,自监督预训练通用代码表示。
DeepLocalize:深度神经网络的故障定位
提出 DeepLocalize,通过动态追踪 DNN 训练中层间数值传播趋势,自动检测并定位故障层或超参数。
基于贝叶斯优化的高效编译器自动调优
提出 BOCA,首个基于贝叶斯优化的编译器自动调优方法,高效搜索优化 flag 组合。
基于深度学习的移动应用部署故障实证研究
首次系统研究移动深度学习应用的部署故障,基于 304 个真实故障构建症状分类法与修复策略。
变异测试能改进测试实践吗?
基于近1500万变异体,实证表明变异测试促使开发者补充高质量测试,并与真实故障相关。
机器学习系统中的重构与技术债:一项实证研究
通过分析26个开源ML项目与327个补丁,揭示ML系统重构动因、技术债类别及14/7个新类别。
基于生成模型的分布感知神经网络测试
提出用深度生成模型将有效输入空间纳入 DNN 测试生成,避免无效测试并提升有效输入数量。
通过整合基于值与基于谓词的因果推断技术改进故障定位
提出 UniVal,用因果推断与机器学习融合谓词结果和变量值,更准确估计语句致错效应以改进故障定位。
白盒分析优于机器学习:为可配置系统建模性能
提出 Comprex 白盒方法,结合局部测量、动态污点分析与配置空间压缩,以更低成本构建精度相当且可解释的性能影响模型。
恢复 Jupyter Notebook 的执行环境
SnifferDog 通过收集 Python 包 API 数据库并分析 notebook 推断所需依赖包及版本,恢复其可执行环境。
面向机器学习库的自动单元测试生成:我们还有多远?
实证评估EVOSUITE与Randoop在五个机器学习库上的单元测试生成效果,发现现有工具提升有限且未覆盖代码存在共性模式。
从版本控制系统的人工修复补丁中提取简洁的缺陷修复补丁
提出 BugBuilder,通过剥离重构改动、枚举子集并用测试验证,从版本库提交中自动提取完整且简洁的缺陷修复补丁。
SOAR:一种面向数据科学 API 重构的合成方法
无需训练数据,利用库文档与程序合成自动重构数据科学 API,并用解释器错误信息剪枝搜索空间。
EvoSpex:一种学习后置条件的进化算法
提出 EvoSpex,用遗传算法从方法执行与变异的前后状态对中自动学习 Java 方法后置条件断言。
Shipwright:面向 Dockerfile 修复的人在环系统
提出 Shipwright,利用 BERT 聚类构建日志并结合搜索规则自动修复损坏的 Dockerfile。
IdBench:评估源代码中标识符名称的语义表示
提出首个基于500名开发者评分的标识符语义表示基准,发现现有嵌入能表示语义相关性但难以表示语义相似性。
白盒性能影响模型:一种剖析与学习的方法
提出方法级白盒性能影响建模,结合粗/细粒度剖析与学习,定位配置敏感方法并提高预测精度。
程序合成能否用于学习合并冲突解决方案?一项实证分析
首次将程序合成用于学习合并冲突解决:提出DSL从示例学习策略,可解决11.4%冲突且准确率93.2%。
模糊测试符号表达式
提出近似求解器 FUZZY-SAT,用模糊测试技术判定符号公式可满足性,作为混合模糊测试中 SMT 求解的替代与补充。
JUSTGen:针对 JVM 上未指定 JNI 行为的有效测试生成
提出 JUSTGen,用 DSL 和 SMT 发现 JNI 规范未指定情形并生成测试,揭示 JVM 调试检查的缺陷。
一种用于评估抽象语法树映射算法的差分测试方法
提出基于差分测试的分层比较方法自动评估AST映射算法准确性,发现主流算法在20%–36%的文件修订上产生错误映射。
FLACK:面向 Alloy 模型的反例引导故障定位
提出反例引导的故障定位技术 FLACK,为声明式 Alloy 模型定位并排序导致断言违反的可疑表达式。
将 JavaScript 程序适配到演化中库的语义补丁
提出 JSFIX,利用语义补丁、静态分析和交互式确认来检测并适配 JavaScript 客户端因库破坏性变更而失效的代码。
可持续求解:利用智能垃圾回收降低基于 IFDS 的数据流分析内存占用
提出 CleanDroid,通过智能清理 IFDS 路径边表来降低数据流分析的内存占用并加速求解。
不安全就不应编译:通过 API 加固在大规模 Web 开发中防止基于 DOM 的 XSS
提出 API 加固范式,用安全 API 与编译期检查在大规模 Web 开发中消除基于 DOM 的 XSS。
MuDelta:提交时刻的增量导向变异测试
提出 MuDelta,用机器学习预测与提交变更相关的变异体,提升持续演化软件变异测试的有效性。
Hero:当 PATH 遇上 Modules 时的混乱
通过实证研究刻画 Go 依赖管理问题,并提出自动检测与修复建议工具 Hero。
资源引导的深度学习模型配置空间缩减
提出 DnnSAT,用代价模型与 SMT 求解在 AutoML 前缩减不满足资源约束的配置空间,加速 HPO 与 NAS。
IMGDroid:检测 Android 应用中的图像加载缺陷
提出静态分析工具 IMGDroid,基于五类反模式检测 Android 应用中的图像加载缺陷。
JEST:JavaScript 引擎与规范的 N+1 版本差分测试
提出 N+1 版本差分测试,通过自动合成并注入断言的程序检测和定位 JavaScript 引擎与 ECMAScript 规范缺陷。
GenTree:用决策树学习可配置软件中的交互
提出 GenTree,用决策树迭代学习配置项与代码覆盖之间的交互公式,高效刻画可配置程序的配置空间。
研究文本到文本迁移变换器(T5)在代码相关任务中的应用
在自然语言与源码上预训练 T5,单模型微调后在缺陷修复、变异注入、断言生成与注释生成四个任务上均超越各自基线。
基于概率标签估计的半监督日志异常检测
提出半监督日志异常检测方法PLELog,通过概率标签估计利用历史异常知识,并用注意力GRU提升检测效果。
将语法树输入 Transformer 进行代码预测
让 Transformer 感知代码的语法结构,使代码补全的下一 token 预测准确率大幅提升。
迈向代码评审活动的自动化
训练两个深度学习模型分别自动化代码评审的贡献者端与评审者端:提交前自动施加评审式代码变换,并按自然语言评论改写代码。
可追溯性变革:使用预训练 BERT 模型生成更准确的链接
提出 T-BERT 框架,通过三步训练迁移预训练 BERT 知识,为源代码与自然语言制品生成更准确的可追溯链接。
基于变异分析的深度神经网络测试输入优先级排序
提出PRIMA,利用变异分析与学习排序优先标注更可能暴露DNN缺陷的测试输入,降低标注成本。
ATVHunter:面向 Android 应用漏洞识别的可靠第三方库版本检测
提出两阶段 TPL 检测系统 ATVHunter,精确识别 Android 应用中的第三方库版本及其漏洞。
FlakeFlagger:无需重跑测试预测测试不稳定性
提出 FlakeFlagger,用测试行为特征预测可能 flaky 的测试,无需重跑,显著降低误报。
基于好奇心驱动强化学习的自动化 Web 测试
提出 WebExplor,用好奇心驱动强化学习生成动作序列并增量构建自动机引导,显著提升 Web 测试的故障检测率与覆盖率。
DeepPayload:通过神经载荷注入对深度学习模型的黑盒后门攻击
提出 DeepPayload,通过向编译后的深度学习模型注入神经条件分支实现黑盒后门攻击,并在真实移动 App 中验证风险。
智能合约安全:从业者视角
通过混合方法实证调查从业者对智能合约安全的认知、实践与开发流程整合。
RobOT:面向鲁棒性的深度学习系统测试
提出 RobOT 测试框架,用量化指标指导生成能提升模型鲁棒性的测试用例并判断鲁棒性改进是否收敛。
软件公平性中的“无知与偏见”
通过实证研究发现扩大特征集可同时提升公平性与准确率,而增大训练数据未必改善公平性。
AUTOTRAINER:自动 DNN 训练问题检测与修复系统
提出 AUTOTRAINER,在训练过程中自动检测五类常见 DNN 训练问题并调用内置方案自动修复。
IoT 缺陷与开发挑战
首个基于大规模实证的 IoT 缺陷分类与开发挑战研究。
DeepLV:使用基于序数的神经网络推荐日志级别
利用日志级别的序数特性与神经网络,从代码语法上下文和日志消息中为日志语句推荐合适的日志级别。
基于 Stack Overflow 查询日志的自动化查询重构以实现高效搜索
利用 Stack Overflow 查询日志训练 Transformer,为开发者自动生成更有效的搜索查询。
CENTRIS:一种精确且可扩展的经修改开源软件复用识别方法
提出 CENTRIS,通过切分 OSS 并检测独特片段复用,精确可扩展地识别经修改且嵌套的开源软件复用。
通过开发者知情基准评估 SZZ 实现
提出基于开发者显式引用与人工过滤构建 oracle,并评估多种 SZZ 变体的准确率。
PyART:面向 Python 的实时 API 推荐
提出 PyART,用轻量乐观数据流和随机森林实现 Python 实时 API 推荐,优于现有工具。
布局与图像识别驱动的跨平台自动化移动测试
提出利用UI布局相似性的图像驱动跨平台移动测试框架LIRAT,实现平台无关的测试脚本非侵入式回放。
全球 COVID-19 接触者追踪应用的实证评估
提出 COVIDGUARDIAN 自动评估接触追踪应用的安全与隐私弱点,并结合用户研究给出部署指南。
RAICC:揭示 Android 应用中的非典型组件间通信
提出静态分析方法 RAICC,识别 Android 框架中未文档化的非典型 ICC 方式,补全组件间通信模型并提升安全分析效果。
基于图的深度学习推理引擎模糊测试
提出基于图的模糊测试方法,用MCTS驱动DL模型变异生成,提升推理引擎算子级覆盖率并发现大量异常。
CodeShovel:构建方法级源代码历史
提出 CodeShovel,快速准确构建方法级源码历史,性能优于现有研究与实践工具。
别这么做!依据设计准则在复杂 UI 中猎捕视觉设计坏味道
系统研究 Material Design 的 93 条“不要做”准则,量化 Android 应用中的 UI 设计坏味道,并构建自动检测器 UIS-Hunter。
基于上下文的自动化方法名一致性检查与建议方法
提出 DeepName,利用方法上下文与 RNN 编码器-解码器检测方法名不一致,并推荐更合适的方法名。
面向所有技术的快速且精确的即时补丁验证
提出 UniAPR,通过运行时字节码变换重置 JVM 全局状态,实现快速且精确的即时补丁验证。
基于多级软件胎记模型的可解释软件复用检测
提出 ISRD,用函数/基本块/指令三级胎记与最小分支路径、归一化和锚点搜索,实现可解释、高效、跨编译鲁棒的二进制复用检测。
基于深度截图理解的众包测试报告优先级排序
提出 DeepPrior,利用深度截图理解提取 DeepFeature 并计算 DeepSimilarity,以更少开销优先排序众包测试报告。
我们会在后期修复:电子游戏更新说明中的缺陷修复告诉了我们什么?
通过标注 30 款 Steam 游戏 723 次更新中的 12,122 条缺陷修复并结合开发者调查,揭示了游戏缺陷类型的分布、复发与严重性规律。
库中悄然无声:Android 应用原生代码安全更新的实证研究
通过 LibRARIAN 识别 Android 应用中原生库版本,实证发现热门应用长期使用含已知 CVE 的过时库。
针对未确定规约上错误假设的 flaky 测试的领域特定修复
提出 DexFix,自动修复测试中对未确定规约的错误假设,如 HashMap/HashSet 迭代顺序依赖。
为什么开发者检测不到不当输入验证?'; DROP TABLE Papers; --
在线实验表明,可见攻击场景和警告提示会影响开发者对不当输入验证漏洞的检测,仍有不少人即使被警告也未发现。
运行是最难的老师:通过寻找误预测来估计 DNN 准确率
提出 DeepEST,主动采样误预测样本,以更小测试集同时准确估计 DNN 精度并发现更多错误。
度量区分度以提升多个深度学习模型的比较测试
提出基于样本区分度的选择方法 SDS,用少量样本高效且准确地排序多个深度学习模型。
Alloy 规约修复的有界穷举搜索
提出 BeAFix,对有缺陷的 Alloy 规约进行有界穷举且可扩展的自动修复,并用断言剪枝。
Abacus:精确的侧信道分析
提出精确量化单次执行侧信道泄露比特数的程序分析方法,并实现工具 Abacus。
SQLRepair:识别并修复学生编写的 SQL 查询中的错误
分析学生初学 SQL 的常见错误,并实现自动修复工具 SQLRepair,评估其修复可理解性并发布基准。
TransRegex:基于生成与修复的多模态正则表达式合成
提出 TransRegex,将自然语言与示例的正则合成转化为基于 NLP 的生成加正则修复,提升准确率。
基于模型分片的快速参数化模型检测
提出 fPMC,将马尔可夫模型分片并独立分析可达性再组合公式,显著提升参数化模型检测的可扩展性。
面向数据的对象关系映射系统差分测试
首个系统化测试ORM系统的方法,结合差分测试与求解器生成数据,发现28个真实缺陷。
开源软件开发决策中理由的抽取——基于 Python 邮件归档的研究
从约150万封Python开发邮件中抽取开源决策理由,提出启发式Rationale Miner系统。
使用 Bonsai Fuzzing 培育测试语料库
提出 Bonsai Fuzzing,一种基于覆盖引导和文法的模糊测试技术,通过迭代加深按构造生成简洁测试输入语料。
软件生态系统中的技术杠杆:开发机遇与安全风险
提出技术杠杆度量并实证发现中小型 FOSS 库杠杆更高、发布延迟仅 4% 但漏洞几率高 1.6 倍。
AID:自动检测开源软件项目页面中性别包容性缺陷的工具
提出 AID,将 GenderMag 自动化以检测 OSS 项目页面中的性别包容性缺陷,并在 20 个 GitHub 项目上验证。
Siri,写出下一个方法
提出检索式方法 FeaRS,根据 IDE 中当前代码推荐下一个完整方法(签名与实现)。
思维具有强大影响力:展示代码可理解性度量如何影响代码理解
随机双盲实验发现,展示代码可理解性指标值会显著且强烈地锚定开发者的主观可理解性评分,但不影响理解任务的耗时或正确率。
同一文件,不同变更:GitHub 上元维护的潜力
提出元维护概念,揭示 GitHub 跨仓库共享文件的不同演化,为复用文件维护提供机会。
“1234”可以吗?Android 应用中 SMS 一次性密码随机性分析
提出 OTP-Lint 工具,在无源码条件下评估 Android 应用 SMS OTP 的伪随机数生成,并发现大量可预测 OTP 漏洞。
AutoCCAG:约束覆盖数组生成的自动化方法
提出 AutoCCAG,利用自动算法配置与选择生成更小的约束覆盖数组,并首次报告 5-way CCAG 结果。
支持质量保证的自动化以过程为中心的质量约束检查
提出后台过程跟踪并自动检查质量保证约束的框架,及时提醒开发者未满足的约束以减少返工。
DepOwl:检测依赖缺陷以预防兼容性失败
DepOwl 通过检测依赖缺陷,让用户从一开始就避开不兼容版本,从而预防兼容性失败。
反应式系统规约的不可实现核心
提出 QuickCore 和 Punch 算法,分别加速 GR(1) 规约的不可实现核计算并枚举全部核,并处理更高层构造。
为动态软件更新合成对象状态转换器
通过复用新旧版本代码片段,自动合成动态软件更新中非平凡的对象状态转换器。
理解安全关键型无人机(UAV)软件中的边界函数
对 Paparazzi 无人机框架开展实证研究,提出边界函数五类分类法并动态评估其对 UAV 行为的影响。
输入代数
提出输入代数与语法变换器,通过任意布尔模式组合特化语法,支持定向测试生成与校验。
发现 Scratch 作业中的异常
将异常检测用于 Scratch 课堂作业,无需人工规约即可发现代码偏差。
LitterBox:Scratch 程序的 Linter
提出 LitterBox,一个检测 Scratch 程序已知缺陷与代码坏味,并向学习者解释原因和可能误解的 Linter。
“周末过得怎么样?”——COVID-19 疫情期间居家办公的软件开发团队
通过两次大规模调查揭示居家办公对软件开发团队文化与生产力的影响,并建模识别关键团队文化因素。
流变的动机:重新审视开源贡献者的驱动力
通过对242名开源贡献者的调查,揭示开源生态变化下贡献动机的演变及不同群体差异。
程序理解与代码复杂度度量:一项 fMRI 研究
用 fMRI 研究检验代码复杂度度量能否反映程序理解难度,并揭示文本规模与词汇量的认知影响。
你真的会编程吗?为面向程序员的在线调查设计与评估筛选问题
设计并评估面向在线调查的程序员筛选问题,以识别并过滤不具备编程技能的参与者。
自动匹配缺陷报告与相关应用评论
提出 DeepMatcher,利用深度学习将应用评论中的问题报告自动匹配到缺陷跟踪系统中的 bug 报告。
使用领域特定语料库改进需求中的歧义处理
利用Wikipedia自动构建领域特定语料库,提升需求中协调歧义与介词短语附着歧义的检测和解释准确率。
用轻量级权限系统遏制 npm 中的恶意包更新
提出在运行时按包强制的最小权限系统,限制 npm 包对文件系统与网络 API 的访问,抵御恶意更新。
基于 UI 的 flaky 测试实证分析
对 Web 与 Android 项目的 235 个 UI flaky 测试样本进行实证研究,归纳根因、触发策略与修复策略。
从 App 用户评论中识别关键特征
提出 KEFE,结合 App 描述与用户评论,用 NLP、深度分类和回归分析识别与评分高度相关的关键特征。
开发者如何优化虚拟现实应用:开源 Unity 项目中优化提交的研究
首个对45个开源Unity VR项目中183次性能优化的实证研究,分类优化并分析其生命周期影响与效果。
云系统中配置设计与实现的演化研究
通过分析四个云系统1178个配置相关提交,揭示配置设计/实现演化实践,倡导将配置工程提升为一等公民。
留下我的印记:为公益开源软件贡献的动机与挑战
通过访谈与问卷调查,揭示公益开源(OSS4SG)贡献者的动机、挑战及其与普通开源贡献者的差异。
为什么代码审查中安全缺陷未被发现?Chromium OS 项目的病例对照研究
通过对 Chromium OS 的病例对照研究,识别出影响代码审查能否发现安全缺陷的关键因素,并建立高精度预测模型。
开源软件中开发者专长的表示
提出 Skill Space,用 Doc2Vec 将 API、开发者与项目嵌入同一空间,以表示开源开发者专长。
软件团队中新人入职的案例研究:任务与策略
通过访谈与问卷刻画软件团队新人入职任务如何影响学习、信心与社交,并总结管理者常用策略及建议。
论方法的命名:一项针对专业开发者的调查
通过对1100余名专业开发者的调查,发现方法命名规范在实践中获高度共识,且经验与编程语言影响甚微。
从在线开发者聊天中自动抽取观点型问答
提出自动识别观点型提问并抽取参与者答案的方法,用于从开发者聊天构建观点问答助手。
是什么造就了优秀的开源项目维护者?
通过访谈与问卷揭示优秀开源维护者除技术外所需的管理、社交与人格特质,并构建属性框架。
基于层次化视觉分析的语义Web无障碍测试
提出AXERAY,通过层次化视觉分析推断网页区域的语义分组与语义角色,实现语义级Web无障碍检测。
基于服务关联挖掘的大规模生产云快速故障分析
提出 COT,通过挖掘服务关联对大规模生产云故障进行快速根因服务定位。
游戏化如何影响软件开发者:来自 GitHub 自然实验的警示性证据
通过 GitHub 移除连续贡献计数器的自然实验,发现游戏化会显著改变开发者行为并可能产生负面引导。
什么有帮助,什么没有?改进持续集成的策略评估
首次系统比较持续集成改进技术,评估10种技术的14个变体在构建与测试粒度上的得失。
早期生命周期软件缺陷预测:为什么?如何?
分析数百个 GitHub 项目后发现,缺陷集中在项目早期,前150次提交和四个月数据训练的缺陷预测器已足够好。
真实世界中的测试注解维护研究
首次细粒度实证研究真实 Java 项目中测试注解变更,揭示其频率、迁移模式与变更动机。
入门引导 vs. 多样性、生产力与质量——OpenStack 生态系统的实证研究
通过观察 OpenStack 新人引导活动并挖掘仓库数据,实证揭示 onboarding 对贡献者多样性、生产力与质量的影响。
CHAMP:基于市场政策从用户评论中刻画不良应用行为
提出 CHAMP,用文本挖掘与 NLP 从用户评论识别违反应用市场政策的不良行为,并开展大规模实证分析。
基于虚拟平台的无缝可变性管理
提出虚拟平台,以语言无关概念结构与算子桥接克隆-拥有和平台化开发,实现变体丰富系统的增量演化。
通过部分线程保护实现 GPGPU 应用的软件韧性
通过线程韧性识别与重映射,将同韧性线程归入同一 warp,实现 GPGPU 选择性复制容错并降低开销。
CPS 属性的迹检查:弥合信息物理鸿沟
提出混合信号逻辑 HLS 及基于 SMT 的轨迹检查过程 ThEodorE,兼顾表达力与性能。
利用回归测试选择增强软件的遗传改进
将回归测试选择引入遗传改进搜索,显著加速软件自动改进且保持有效改进。
“做这个!做那个!,什么都不会发生”:规范能否促成安全的密码存储?
通过138名开发者的对照实验发现,要求先写规范仅小幅提升密码存储安全性,开发者仍普遍不安全。
崩溃缺陷的自动解决方案摘要
提出 CRASOLVER,结合崩溃轨迹结构与知识相似度检索问答并多因子摘要崩溃解决方案。
评估 R 包中的单元测试实践
首次大规模实证分析 R 包单元测试质量、测试技术债来源及开发者面临的挑战。
众包中的规划扑克:软件工作量估算的人类计算
该论文设计并评估了在 Amazon Mechanical Turk 上进行的众包 Planning Poker,证明精心组织的众包可达到接近单个专家的估算精度。
使用专业敏捷教练与实践社区教授 Scrum Master 角色
报告一学期 Scrum Master 培训课程,专业敏捷教练与实践社区协作提升学生学习效果。
如何利用对比性度量识别边界条件?
提出对比性细粒度度量与后处理/联合框架,过滤冗余边界条件,减少需工程师评估的分歧。
GitHub-OSS Fixit:在软件工程课程中大规模修复缺陷
提出 GitHub-OSS Fixit 团队课程项目,让学生通过修复 GitHub 开源 Java 项目缺陷学习软件工程,并评估其效果。
基于 Android 系统级虚拟化的 App 自动登录功能安全测试
提出 VPDroid,用 Android 系统级虚拟化定制设备指纹、模拟数据克隆攻击,揭示仅靠客户端设备一致性检查的自动登录仍不安全。
软件工程教育与产业中游戏化评估的多样性:趋势、比较与差距
系统映射 100 项研究,揭示游戏化评估缺乏标准模型,多聚焦策略体验或结果影响。
工业界需要安全编码教育吗?一项大规模调查研究
基于190余名工业开发者的调查,揭示安全编码指南认知与遵守不足,论证行业安全编码教育必要性并给出15项行动建议。
让软件工程本科生胜任 DevOps——在项目导向课程中引入技术与非技术概念的挑战
设计并实证评估项目导向 DevOps 课程,总结教学经验与难点。
用积木学习软件质量保证
提出 KUALI-Brick:用 LEGO 搭建城市来实践软件质量保证与过程改进的教学活动,并报告三年课程效果。
Bluejay:面向敏捷软件团队的跨工具审计框架
提出开源可扩展的跨工具审计框架 Bluejay,利用多工具 API 收集并合成团队实践测量,以仪表板审计敏捷团队实践。
变异测试与自我/同伴评估:分析其对软件测试课程学生的影响
通过三年课程实践,研究变异测试与自我/同伴评估如何影响学生对自写测试套件的认知与质量判断。
双管齐下:结合视觉与文本信息检测重复的视频缺陷报告
提出 Tango,融合视觉与文本分析,高效检测基于屏幕录制视频的重复缺陷报告。
利用持续集成和面向切面编程增强数据库访问编程的学习
提出结合持续集成与面向切面编程的教学框架,提升JDBC数据库访问编程的反馈、作业管理与最佳实践采用。
代码演化背景下间接依赖文档的研究
研究代码演化中函数文档的间接依赖普遍性,并基于提交日志分析更新模式以建议文档更新。
评估学生对代码审查清单的理解及其错误:来自394名学生1,791个代码审查清单问题的经验报告
对394名学生1,791个代码审查清单问题的定性研究显示,学生虽存在概念误解,但能预测潜在缺陷并创建较有效的审查清单。
通过专门化数字同人志改善概念学习
论文提出用专门化数字同人志辅助本科编程课程中的难点概念学习,并给出敏捷制作与课程实施流程。
软件产品线中的入职引导:概念图作为欢迎指南
提出用概念图作为软件产品线领域新成员入职的引导工具,并给出特征驱动的构建过程与形成性评估。
面向新手程序员程序行为误解的探究式代码编辑器
提出探究式代码编辑器,通过提问识别并纠正新手对程序行为的误解。
Gradeer:一个开源的模块化混合评分器
提出并评估了Gradeer,一个结合自动与人工评分的开源模块化混合评分工具。
面向行业专业人士的基于模型的需求工程教学:一份经验报告
报告面向行业专业人士开展基于模型的需求工程培训的经验,并总结课程设计指南。
GUIGAN:使用生成对抗网络学习生成GUI设计
提出基于SeqGAN的GUI设计自动生成模型,通过复用组件并建模风格兼容性与结构来合成新设计。
将阅读、可视化与编程联系起来:一项针对新手程序员的神经影像研究
用 fNIRS 研究新手编程、阅读与心理旋转的脑活动,发现三者神经上可区分,且编程更依赖空间与难度相关脑区。
要获得良好的学生评教分数,只需教授编程课程吗?软件工程情境下学生评教的调查与启示
基于芬兰软件工程专业 1295 份评教数据,发现编程与软件构建课程的学生评教分数高于过程、模型与方法课程。
为600多名学生评分:同伴评分与自我评分的案例研究
通过软件测试课程中906份自评/同伴评分与248份助教评分的对比,发现同伴评分可较好近似助教评分。
改革评估:超越设计的挑战
设计并大规模部署软件工程顶点项目评估框架,揭示超越设计本身的实施挑战与支持策略。
以四步项目式学习法支持软件工程中的真实需求
通过四步项目式学习案例,让学生与外部利益相关者合作完成真实软件项目,并总结其成效与经验。
工业界中的建构性硕士论文工作:应用设计科学研究的指南
基于12篇设计科学硕士论文,总结在工业界开展建构性硕士论文的常见陷阱与实践建议。
学生项目中混合软件开发过程的评估:一项受控实验
通过受控实验比较混合开发方法与迭代式、顺序式方法对学生项目产品质量、团队生产力和人的因素的影响。
大规模信息技术学生群体中同伴评审在用户中心概念设计教学与学习中的有效性
利用综合量规让大规模IT学生互评用户中心概念设计,发现学生评审接近研究者评审,并能及时提供反馈与促进反思。
围绕OWASP应用安全验证标准构建综合性软件安全课程
分享软件安全课程经验,将漏洞发现映射到OWASP ASVS安全控制,并评估其提升学生理解的效果。
学生如何测试软件单元?
实证研究发现,入门编程学生虽自认系统测试,实际并不系统,且难以脱离代码设计测试用例。
计算机科学与软件工程本科生的指数胜任力
提出“指数胜任力”概念,并描述一门培养计算机科学与软件工程本科生应对指数现象能力的课程。
ICSE 2021 Journal-First 主席致辞
ICSE 2021 Journal-First 主席的欢迎辞,介绍会议与出版事宜,无研究贡献。
ICSE 2021 程序委员会主席致辞
ICSE 2021 程序委员会主席的欢迎辞,不包含技术研究贡献。
早晨还是夜晚?CS1 学生昼夜节律的考察
通过击键数据无监督学习识别 CS1 学生的昼夜节律类型,并关联学业表现与作业设计。
ICSE 2021 JSEET 主席致辞
ICSE 2021 软件工程教育与培训联合轨道(JSEET)主席的欢迎致辞。
“我的麦克风开着吗?”让软件工程学生为协作远程工作和混合团队沟通做好准备
提出研究产业界沟通软件的使用,以帮助学生适应远程与混合软件团队协作。
谁做什么?计算机科学学生团队的工作划分与分配策略
通过访谈二十名计算机科学学生,揭示小组作业中按专长与偏好分工的策略及其对协作学习的影响。
ICSE 2021 大会主席致辞
ICSE 2021 大会主席的欢迎辞,不包含研究贡献。
ICSE 2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE) 2021
ICSE 2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE) 2021
ICSE 2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE) 2021
ICSE 2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE) 2021
ICSE 2021 IEEE/ACM 43rd International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET) 2021
ICSE 2021 IEEE/ACM 43rd International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET) 2021
ICSE 2021 IEEE/ACM 43rd International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET) 2021
2020149 篇 · Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering
基于符号执行的高效浮点误差诱导输入生成
将生成高误差浮点输入建模为覆盖最大化问题,用符号执行实现工具 FPGen 并高效触发大误差。
HARP:跨计算图与宿主 Python 代码的整体分析
HARP 通过跨计算图与宿主 Python 代码的整体分析来重构 ML 程序,平均加速 2.07 倍。
ReluDiff:面向相关神经网络的差分验证
提出 ReluDiff,对两个相关神经网络进行差分形式验证,通过前向区间分析与反向梯度精化证明输出差异性质,显著加速验证。
对 47,587 个以太坊智能合约上自动化分析工具的实证评估
通过可扩展框架 SmartBugs 对 9 个分析工具做大规模实证评估,揭示智能合约漏洞检测精度低与假阳性严重。
深度学习系统中真实故障的分类体系
通过分析 GitHub、Stack Overflow 与访谈,构建并验证深度学习系统真实故障的大规模分类体系。
修复深度神经网络
通过实证研究总结 DNN 缺陷修复模式与挑战,并发布 667 个修复实例基准。
论实践中静态调用图构建的召回率
通过31个真实Java程序的执行预言机,实证测量多种静态调用图算法的召回率,并定位导致漏报的语言特性。
SLACC
围绕跨语言代码克隆检测,指出缺乏共同底层表示,并归纳静态分析与动态分析两类解决路径。
跨项目缺陷对软件生态系统的影响分析
提出生态级依赖分析与符号约束求解结合的方法,识别跨项目缺陷真正影响的下游模块。
攻克值流分析框架的外延可扩展性问题
提出属性间感知的值流分析框架,通过消除多属性检查中的冗余与不一致,大幅提升可扩展性。
流水线化的自底向上数据流分析
提出 Coyote 框架,通过将函数分析划分为可流水线化子任务,在调用依赖下实现自底向上数据流分析的并行加速。
《堆与泄漏》(Heaps'n Leaks)
将运行时堆快照融入静态污点分析,提升 Android 信息流分析的精度与性能。
BCFA:定制化控制流分析
提出定制化控制流分析 BCFA,为每个 CFG 选择最优遍历策略,加速大规模静态分析 1%-28%。
自动驾驶系统的误行为预测
提出误行为预测方法,用于运行时预测自动驾驶系统中 DNN 组件的错误行为,弥补离线测试的不足。
大代码(Big Code)不等于大词汇表(Big Vocabulary)
指出源代码词汇增长远快于自然语言,导致神经语言模型面临大词表与OOV问题并难以扩展。
机器翻译的自动测试与改进
提出 TransRepair,用变异与蜕变测试检测机器翻译的一致性缺陷并自动修复。
深度学习作业程序失败的实证研究
对共享多租户平台上深度学习作业因代码/脚本缺陷而失败的实证研究。
机器翻译的结构不变性测试
提出结构不变性测试以验证机器翻译鲁棒性,弥补其难以评估的问题。
从不确定性视角刻画深度学习软件的对抗性缺陷
系统探讨深度学习软件中对抗样本缺陷与模型不确定性之间的关系,为理解此类缺陷提供新视角。
建议自然的方法名以检查名称一致性
提出 MNire,用机器学习从方法体、接口和类名生成候选方法名,以检查名称与实现是否一致。
重要性驱动的深度学习系统测试
提出 DeepImportance 方法及重要性驱动准则 IDC,用组件重要性刻画测试集的语义多样性。
学习、理解并支持面向 Docker 的 DevOps 制品
提出工具集 binnacle,从 90 万个 GitHub 仓库中学习并语义分析 Docker 等 DevOps 制品,超越浅层语法校验。
使用分层贝叶斯网络提高可追溯性链接恢复的有效性
提出分层贝叶斯网络方法,联合建模多样软件制品间关系,以提升可追溯性链接恢复效果。
CPC:程序分析驱动的代码注释传播与分类
提出 CPC,用程序分析系统化推导、精炼并传播代码注释,辅助缺陷检测。
HyDiff(差分软件分析)
HyDiff 面向差分软件分析,目标是在多个程序路径或程序变体间生成可观察行为发散的执行。
SpecuSym:基于符号执行的推测执行缓存时序泄漏精确检测
提出基于符号执行的方法 SpecuSym,精确检测推测执行引入的 CPU 缓存时序泄漏。
为 JavaScript 库提取污点规范
面向 JavaScript 库的污点规范提取,以支撑细粒度、可扩展的静态安全分析。
利用强化学习快速生成多样化的有效测试输入
提出黑盒强化学习方法 RLCheck,引导随机输入生成器快速产生多样化且有效的性质测试输入。
SAVER:可扩展、精确且安全的内存错误修复
提出基于对象流图的内存错误自动修复技术,可同时实现可扩展、精确且安全的 C 程序内存错误修复。
自动测试字符串求解器
针对字符串 SMT 求解器难以可靠检测不健全性的问题,提出自动测试方法以暴露其错误答案。
使用 XRust 保护 unsafe Rust 程序
提出 XRust 以保障 unsafe Rust 程序的内存安全,弥补其绕过类型系统带来的安全风险。
Simulee
提出首个轻量级 CUDA 同步缺陷检测框架 Simulee,通过解释 LLVM 字节码收集访存信息来自动检测同步缺陷。
理论与实践之间的差距
指出现有智能合约安全研究虽多,但其是否真正提升现实中合约安全性仍不明确。
基于静态前瞻分析的定向灰盒模糊测试
提出结合静态前瞻分析的定向灰盒模糊测试,以引导自动测试生成探索更可能含缺陷的程序区域。
数据库支持的 Web 应用中的数据约束管理
通过实证研究数据库 Web 应用中数据约束的表达、演化与违规处理,并据此开发自动检测工具与 API 增强。
通过程序变换为静态分析定制程序
提出基于规则的程序变换技术,临时改写代码以抑制静态分析误报,支持多语言多分析器。
基于检索的神经源代码摘要生成
提出融合检索相似代码片段的神经源代码摘要方法,缓解低频词问题并提升生成质量。
DLFix
提出双层深度学习模型 DLFix,从历史修复及上下文学得代码变换,用于自动程序修复。
CC2Vec
提出 CC2Vec,一种以日志消息为语义意图引导、学习代码变更表示的神经网络模型。
Android 应用中的可访问性问题
大规模实证研究揭示 Android 应用普遍存在可访问性问题,开发者缺乏意识且应用商店评分无法反映问题程度。
自动驾驶汽车缺陷的综合研究
对百度Apollo和Autoware的1.6万余次提交与499个缺陷进行实证研究,提出缺陷分类并总结16项发现。
通过对抗采样的白盒公平性测试
提出基于对抗采样的可扩展白盒公平性测试方法,高效搜索 DNN 的个体歧视实例。
论基于测试套件的程序修复的效率
对16个Java修复工具进行大规模实证,评估补丁候选生成数量及其效率,揭示模板类修复方法效率最低。
基于模糊测试的数据增强以提升深度神经网络鲁棒性
将变异模糊测试用于DNN训练数据增强,借遗传搜索提升鲁棒性并加速训练。
flaky 测试生命周期研究
首次对专有项目中 flaky 测试的复现、运行时长与修复前时间开展生命周期实证研究。
类型状态引导的模糊测试器:发现 use-after-free 漏洞
提出类型状态引导的模糊测试器 UAFL,用静态类型状态分析与信息流分析引导,高效发现 use-after-free 漏洞。
让你的应用不再“盲”
提出 LabelDroid,基于深度学习自动预测图像按钮的无障碍标签,解决移动应用标签缺失问题。
面向单元测试用例的有意义断言语句学习
提出基于神经机器翻译的 Atlas 方法,自动为测试方法生成有意义的断言语句。
软件可视化与深度迁移学习用于有效软件缺陷预测
针对缺陷预测依赖特定特征提取工具与定制分类器的问题,提出融合软件可视化和深度迁移学习的方法。
Learning-to-rank 与 ranking-to-learn 对比
系统比较 CI 回归测试中学习排序与强化学习两类测试用例优先级技术。
ComboDroid:Android 应用用例组合测试
提出 ComboDroid,通过系统枚举短用例组合生成高质量 Android 测试输入,探索复杂应用功能。
计算密集型信息物理模型的近似-精化测试
提出ARIsTEO,用代理模型与近似-精化循环加速计算密集型CPS模型的黑盒测试。
Rust 是否被软件开发者安全地使用?
一项大规模实证研究揭示 Unsafe Rust 的使用比例及不安全性的传播,质疑 Rust 的内存安全承诺。
Dissector:面向深度学习应用可靠性的故障容错输入区分方法
提出 Dissector,利用预测置信度变化区分 DL 模型可处理与不可处理输入,低开销提升可靠性。
面向 AI 赋能系统的软件工程教学
设计并首次讲授一门面向 ML 背景学生的软件工程课程,强调真实数据、可演进基础设施与伦理需求工程。
Ankou
提出首个能区分执行信息组合的灰盒模糊测试器 Ankou,显著提升缺陷发现效率。
在线即时软件缺陷预测中跨项目学习的研究
首次研究真实在线学习场景下,跨项目数据对即时软件缺陷预测何时及多大程度有用。
项目内漏洞分布的大规模实证研究及经验教训
分析五个开源项目内漏洞在文件、函数、类型与开发者上的分布,提炼12条经验并发现10个0day。
因果测试
提出因果测试,用反事实因果推断定位缺陷根因,并实现 Holmes 插件。
Android 开发者如何处理演化引发的 API 兼容性问题
通过实证研究揭示 Android 开发者处理演化引发的 API 兼容性问题的真实方式、困难与可帮助方向。
SLEMI
提出 SLEMI,为 Simulink 等 CPS 开发工具设计 EMI 变异差分测试,发现 9 个被确认的 bug。
持续集成中构建的成本高效方法
提出 SmartBuildSkip,通过分别预测首次与后续构建失败,在可控延迟下跳过冗余 CI 构建以降低成本。
通过跨项目测试与分析治理行为向后不兼容性
提出 DeBBI,利用客户端项目测试套件与信息检索优先化,跨项目检测库的行为向后不兼容。
系统设计的形式化工具比较
通过17位专家对9种形式化工具建模铁路信号问题的判断研究,给出工具选择与适用性指南。
面向混淆与偏见错误的 DNN 图像分类器测试
提出基于类别属性违规的 DNN 图像分类器鲁棒性测试方法,用于发现混淆与偏见错误。
刻画自适应反馈对新手程序员编译错误的教学收益
通过大规模实验比较人工与自动反馈,发现自动反馈主要提升新手排错效率而非概念理解。
利用众包 API 误用场景、错误代码示例与补丁揭秘官方 API 使用指令
通过挖掘 Stack Overflow 上的 API 误用场景、错误代码与补丁,生成报告帮助理解官方 API 使用指令并调试误用错误。
解读云计算机视觉的痛点
通过挖掘 Stack Overflow 问题,分析开发者使用云计算机视觉 API 的痛点与问题类型。
用于 JIT 诱导侧信道检测的 JVM 模糊测试
提出 JVM 模糊测试技术,自动检测 Java 程序中由 JIT 编译引入的时序侧信道。
Puppet 程序中的实用故障检测
针对 Puppet 配置程序,识别资源顺序约束缺失与服务未绑定资源两类故障。
一刀切并不适用
通过混合方法研究开发者对安全警告形式与集成的偏好,发现需求高度异质,IDE与安全工具应提供更灵活的警告交互。
分析服务的错误配置如何危及移动隐私?
提出半自动检测器 PAMDroid,并在 1000 款热门应用中发现 120 款存在分析服务错误配置,52 款违反服务条款或隐私政策。
消息传递接口(MPI)程序的符号验证
提出 MPI-SV,首个基于符号执行并可自动验证含非阻塞操作的 MPI 程序的工具。
为合并冲突排解而规划
通过分析 Java 项目合并冲突,用机器学习预测冲突解决难度,帮助开发者规划冲突排解。
API 参数规则的实证研究
结合自动定位与人工检查,对 9 个库中 API 参数规则的类型与分布开展大规模实证研究。
启动效应还是提醒?
通过 85 人对照实验表明,代码评审中已有评论并非负向启动,而是对易忽略 bug 的正向提醒。
调试输入
提出 ddmax,无需程序分析即可自动定位并修复输入数据故障,最大化可处理数据子集。
一种追踪安全需求与基于状态设计模型之间追溯关系的新方法
提出突变驱动方法,利用模型检查与过程挖掘分析变异体杀死/存活,提升安全需求与状态机设计模型间的追溯精度。
通过分析可能的效用边界缩减运行时自适应空间
提出 Thallium,用结构化可达性与最优效用边界剪枝,缩减运行时自适应决策空间。
TRADER:RNN 问题词嵌入的自动诊断与修复
通过对比正确与错误样本执行轨迹,自动诊断问题词嵌入并修复,从而提升 RNN 模型准确率。
HeteroRefactor
针对 FPGA HLS 难以支持含指针、内存管理和递归的内核程序,提出自动重构以提升 HLS 兼容性并减少手工优化。
低开销死锁预测
提出首个低开销死锁预测器 AirLock,通过小锁可达图与按环分析,将平均开销降至 3.5%。
验证对象构造
针对面向对象语言中多构造器与设计模式带来的对象构造问题,研究对象构造的验证。
POSIT
提出 POSIT,用 biLSTM-CRF 对混合代码与自然语言文本联合进行语言识别及 AST/词性标注。
利用现有测试揭示注入漏洞
提出 Rivulet,复用开发者测试监控信息流,并用白盒测试生成验证注入漏洞可利用性。
把热度调高!
利用统计故障定位为学生代码生成可疑度热图,以可视化方式引导调试。
利用 provenance 提升数据科学家效率
提出 ProvBuild,利用语言级 provenance 跟踪脚本依赖并生成简化调试脚本,降低认知负荷与调试时间。
在分层模型上测试文件系统实现
提出分层建模与抽象负载细化方法,生成高覆盖系统调用序列以测试文件系统实现。
巨大配置空间中的惰性产品发现
提出在巨大配置空间中惰性发现有效产品配置的方法,通过碎片化相互依赖的特征模型支持配置探索。
sFuzz:面向以太坊智能合约的自适应模糊测试器
提出智能合约模糊测试器 sFuzz,融合 AFL 策略与轻量级多目标自适应策略,高效覆盖难达分支并发现漏洞。
DeepBillboard:面向自动驾驶的物理世界广告牌对抗性测试
提出物理世界广告牌对抗测试方法,在动态驾驶条件下误导自动驾驶转向决策。
软件文档
呼吁先理解实践者对文档质量与任务所需信息的真实需求,以支撑自动文档推荐。
MemLock:内存使用引导的模糊测试
提出以内存消耗为反馈的模糊测试 MemLock,无需领域知识即可发现内存耗尽型漏洞。
Android 应用的时间旅行测试
指出基于搜索的 Android 测试在变异事件序列时会截断原路径,提出时间旅行测试以复用关键应用状态。
全球 Android 银行应用安全风险的实证评估
对全球 Android 银行应用进行实证安全评估,揭示其安全风险并填补全面研究空白。
Watchman:持续监控 PyPI 生态中的依赖冲突
通过实证研究揭示 Python 依赖冲突模式,并提出持续监控工具 Watchman,发现并协助修复大量冲突问题。
将移动应用使用视频记录转换为可重放场景
提出 V2S,利用计算机视觉将 Android 应用录屏自动转换为可重放测试场景。
Gang of eight:基础设施即代码缺陷分类
通过定性分析与从业者调查构建并量化基础设施即代码脚本的缺陷分类体系。
识别开发者编程时的情绪
实证研究揭示编程情绪与生产力的关联及触发因素,并证明仅凭单个腕带的皮肤电与心率指标即可可靠识别开发者情绪。
理解自动化参数优化对跨项目缺陷预测中迁移学习的影响
首次系统实证研究自动化参数优化对62种跨项目缺陷预测技术的影响,发现其显著提升性能且迁移学习参数最关键。
Seenomaly:GUI 动画设计违规检测
提出 Seenomaly,用无监督对抗自编码器“看”GUI 动画,检测其是否违反平台设计禁忌。
预测开发者对代码评审的负面感受
通过问卷调查与代码评审日志交叉分析,刻画并预测开发者在代码评审中产生的负面感受(pushback)。
利用代码审查推荐缓解开发者流失
提出 Sofia 审查推荐器,兼顾审查专业性与知识分散,以低开销降低开发者流失风险。
又来了:程序员学习新编程语言时的知识干扰
通过 Stack Overflow 分析与访谈,揭示程序员学习新语言时旧知识干扰的普遍性与成因。
计算可访问性教育中体验式学习的影响:呈现与评估
创建五个可访问性学习实验室,并评估体验式学习在计算可访问性教育中的影响。
神经分界线:代码书写与散文书写的fMRI研究
首次通过fMRI比较代码书写与散文书写时的大脑神经表征,揭示代码书写独特的认知过程。
薛定谔的安全
研究移动应用开发者安全决策背后的理由,尤其关注缺乏组织支持的独立与小团队开发者。
建立多层级测试到代码的可追溯性链接
提出 TCtracer,自动建立方法级与类级的测试到代码可追溯链接,并在四个开源系统上取得高精度。
如何不致富
通过混合方法研究开源项目捐赠,发现捐赠请求常见但无证据表明捐赠提升项目活跃度。
使需求模型适应变化的环境
针对环境条件变化导致需求模型不再充分、完整和一致的问题,研究需求模型对变化环境的适应。
RoScript:面向触摸屏应用的非侵入式机器人测试脚本系统
提出非侵入式机器人测试系统 RoScript,用视觉测试脚本驱动物理机器人测试触摸屏应用,并从人操作视频自动录制脚本。
将发布流水线中现成的测试用作性能测试的探索研究
探索发布流水线中现成的测试能否作为性能测试,发现多数性能改进可由少数测试体现,并分析影响因素。
企业如何在开源生态系统中协作?
通过对 OpenStack 的实证研究,揭示企业在大规模开源生态中的协作模式及其与生产力的正向关联。
Web 应用模型推断中的近似重复检测
首次研究 Web 应用模型推断中的近似重复检测,分类并评估 10 种技术,发现准确检测与覆盖率难以兼得。
通过构建 Activity 启动上下文对 Android 应用进行多入口测试
提出通过构建 Activity 启动上下文实现 Android 应用多入口 GUI 测试,以覆盖单入口难以到达的边缘 Activity。
基于深度孪生网络的海量聊天消息中隐藏功能请求检测
提出 FRMiner,用深度孪生网络与少样本学习从聊天消息中检测隐藏的功能请求对话。
Java 日志工具在真实世界中的使用研究
通过大规模实证研究揭示 Java 项目中日志工具(LU)的复杂使用模式、原因及工业界反馈。
对软件工程中灰色文献使用的循证式探究
以循证方式考察软件工程研究中灰色文献的使用现状,填补该方面缺乏经验性认识的空白。
少样本恶意软件家族分类的不成功故事:Siamese 网络前来救场
揭示现有方法在少样本恶意软件家族上表现差,提出基于 Siamese 网络的 MLP 嵌入方法提升分类性能。
Caspar:应用评论中的用户交互故事识别
提出 Caspar,从应用评论中识别由用户动作与应用行为构成的交互故事。
上下文感知的流程内众包工作者推荐
论文倡导在众包测试过程中进行上下文感知的动态工作者推荐,以缩短无新缺陷产生的非产出窗口。
来自一线的故事
通过两步实地研究揭示认知偏差如何普遍影响开发者日常行为,并指出现有工具与实践支持不足。
面向 Android 应用的协作式缺陷发现
提出协作式缺陷发现,利用相似应用缺陷报告与 Bugine 推荐 GitHub issue 发现 Android 新缺陷。
当 API 被有意绕过时
通过 Stack Overflow 实证分析 API 绕过式变通方案,归纳动因、解决方案与三种实现模式。
发现客户端业务流篡改漏洞
提出基于动态分析的方法自动发现客户端业务流篡改漏洞,在200个网站中识别出27个漏洞。
从知识差距解释结对编程会话动态
通过知识差距解释结对编程会话中的动态变化,以厘清结对编程何时更有用。
代码与演化元模型的协同演化
提出基于变更传播的半自动方法,利用元模型演化知识与解析来协同演化生成 API 及工具代码。
软件从业者如何利用非正式本地聚会分享软件工程知识
通过访谈和问卷调查,揭示软件从业者参与本地技术聚会的主要动机、获取知识的类型及其对软件工程实践的补充作用。
GidgetML:基于机器学习的自适应编程游戏
提出GidgetML,用机器学习自适应调整Gidget编程游戏任务以匹配学习者能力,显著降低学生表现差异。
创新与主动学习在移动应用开发者培训中的应用
提出 IDEAS 方法,通过选拔、挑战式主动学习、软件生产与创业孵化培养移动应用开发者。
阅后即焚
针对 ROP 攻击中的返回地址覆写问题,提出一种避免昂贵指针追踪的运行时重随机化防护思路。
助手与超级英雄
通过让学生在 Java 线程与 Scala Actor 两种方式下实现同一并发问题,分析其从设计到实现阶段的推理困难。
通过同伴教学应对企业技术学习与教学的双重挑战
设计并评估同伴教学模块,帮助学生从入门编程过渡到企业技术,同时减轻教师备课负担。
一种让学生参与建模的交互式学习方法
针对建模教学缺乏即时反馈、学生参与度低的问题,提出一种让学生投入建模的交互式学习方法。
过去 20 年中 fork 发生了怎样的变化?
本文通过大规模分类与访谈,揭示 GitHub 上 hard fork 多由 social fork 演化而来,且对其看法已转向积极。
将性别包容性工程化融入软件
通过10个真实软件团队5个月至3.5年的实践,总结GenderMag落地为9项实践、2个陷阱和2个开放问题。
规模化开源社区
通过对 Linux 内核 i915 子系统的实证研究,揭示多提交者模型如何缓解维护者压力并实现开源社区规模化。
面向团队软件工程项目的真实性个人评估
提出基于作品集的评估框架,在团队软件工程项目中真实且公平地衡量个人贡献。
在大型 capstone 教育中采用工业界敏捷实践
报告大型软件工程 capstone 项目中引入产业敏捷组织模型的经验与初步观察。
理解 DevOps 教育:一项扎根理论研究
基于扎根理论从学术界与工业界视角研究 DevOps 教育现状,指出课程与产业需求间的差距并提出未来研究方向。
用音频评论丰富编程学生反馈
将跨浏览器音频反馈集成到 Doubtfire LMS,并评估音频与文本混合反馈对编程学生的支持效果。
我们应当教给学生产业界不想要的东西
基于20余年伦理教学经验,主张软件工程教育应超越产业需求,教授产业界可能排斥的主题与价值。
迈向应用主动学习策略的软件建模教学开放仓库
提出 OpenSMALS 开放仓库,帮助教师应用主动学习策略教授 UML 软件建模,并通过设计循环迭代验证其效果。
软件工程出版物中人类价值观的普遍性研究,2015--2018
分析2015--2018年顶级软件工程会议与期刊中人类价值观研究的覆盖情况,发现直接相关论文占比很低。
使用公共免费的基于平台即服务(PaaS)的轻量级项目进行软件架构教育
提出利用公共免费PaaS上的轻量级项目开展软件架构体验式教学,以缓解学生经验不足与心智模型困境。
基于RateMyProfessor.com数据对受欢迎计算机科学与软件工程教师教学质量的实证研究
通过挖掘RateMyProfessor上300多名CS/SE教师的9000多条学生评论,总结受欢迎教师的教学特征并公开数据。
VeriSIM:用设计追踪理解类图与序列图
提出设计追踪策略并实现 VeriSIM 学习环境,帮助学生通过追踪场景理解类图与序列图。
利用小组轮换动态来传达良好软件设计的重要性
在软件设计课程中引入学期中小组轮换,让学生亲身体会技术债与建模工件的价值。
是什么阻碍了芬兰女性申请软件工程岗位?
通过调查芬兰女性早期计算经历,揭示其自效能感与态度如何影响软件工程求职。
2019147 篇 · 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)
基于优先随机代数变换的数值程序全局优化
提出数值程序全局优化框架,用符号轨迹与优先随机代数变换兼顾精度与效率。
NL2Type:从自然语言信息推断 JavaScript 函数类型
利用注释、函数名与参数名等自然语言信息,以 LSTM 预测 JavaScript 函数类型签名,并可用于检查类型注解一致性。
当代码补全失败:一项真实世界补全的案例研究
通过 15,000 次真实开发者补全案例研究,揭示合成基准高估代码补全性能,高耗时补全准确率不足 20%。
概率反汇编
提出概率反汇编方法,为每个地址估计其为真实指令的概率,在大量二进制上实现零漏报与低误报。
通过在线抽象粗化的资源感知程序分析
提出资源感知的程序分析技术,通过在定点计算中在线粗化抽象,在满足内存约束的同时保持高精度。
将二元分类器训练为数据结构不变式
用神经网络二元分类器学习数据结构合法性不变式,替代动态不变式检测,提升合法/非法对象判别与缺陷发现能力。
一种基于抽象语法树的新型神经源代码表示
提出 ASTNN,将大型 AST 拆分为语句树序列并用双向 RNN 编码,显著提升代码分类与克隆检测效果。
使用 Surprise Adequacy 指导深度学习系统测试
提出 SADL——基于输入相对训练数据意外程度的深度学习系统测试充分性准则,并用于指导测试与再训练。
RESTler:有状态的 REST API 模糊测试
首个有状态 REST API 模糊测试器,通过推断请求依赖并利用响应反馈生成测试序列,发现 28 个 GitLab 缺陷及多个云服务缺陷。
CRADLE:跨后端验证以检测与定位深度学习库中的缺陷
提出 CRADLE,用跨实现不一致性检查检测深度学习库缺陷,并通过异常传播分析定位故障函数。
通过模型变异测试进行深度神经网络对抗样本检测
提出基于模型变异敏感度的运行时对抗样本检测方法,通过统计假设检验区分正常与对抗样本。
Gigahorse:智能合约的彻底、声明式反编译
提出 Gigahorse 工具链,以声明式逻辑规范将 EVM 字节码反编译为高层三地址 IR,支持智能合约分析。
BugSwarm:挖掘并持续增长可复现失败与修复数据集
提出 BugSwarm 工具集,从 CI 构建中挖掘可复现的失败-通过版本对并持续增长数据集。
SMOKE:面向数百万行代码的可扩展路径敏感内存泄漏检测
提出两阶段路径敏感静态分析,兼顾大规模可扩展性与内存泄漏检测精度。
DockerizeMe:自动推断 Python 代码片段的环境依赖
DockerizeMe 通过 PyPI 离线知识与图推断自动补全 Python 代码片段依赖并生成 Docker 配置。
编程作业自动评分:一种基于形式语义的方法
提出 AutoGrader,基于最弱前置条件与符号执行比较学生程序与参考实现的语义路径差异,实现自动评分并给出反例。
基于图嵌入的无监督 Android 恶意软件家族分析
提出 GefDroid,用图嵌入与无监督社区检测进行 Android 恶意软件家族分析,兼顾准确率与效率。
VFix:值流引导的空指针解引用精确程序修复
VFix 利用值流分析缩减补丁搜索空间,从而为 NPE 缺陷生成更多正确补丁。
基于变异分析揭示库 API 误用
提出 MutApi,利用变异分析从正确 API 用法生成变异体并挖掘高精度 API 误用模式。
FastLane:面向快速部署的大规模在线服务的测试最小化
利用测试与提交日志训练轻量机器学习模型预测测试结果,跳过部分测试以减少大规模 CI/CD 服务的测试时间。
支持可变性模型的统计分析
提出可变性模型的概率基础,支持统计推理、可视化与更精确敏感的自动化分析。
超大规模代码库中的类型迁移
用图表示加 MapReduce 实现可扩展至数亿行代码的类型迁移重构,98% 生成补丁被接受。
Java 中架构不一致性的检测与修复
针对 Java 9 模块系统定义 8 类不一致依赖,并提出静态分析与自动修复方法 DARCY。
面向随机近似程序的统计算法剖析
提出 AXPROF,用统计检验自动剖析随机近似程序是否满足精度、时间和内存规范,并发现 bug 与优化机会。
不可预测且可抢占的中断驱动系统的简易建模与验证
提出中断序列图 ISD 及其自动机语义,将中断驱动系统转换为混合自动机以复用模型检测器。
MAF:基于方法锚定的测试代码分片用于测试代码抄袭检测
提出 MAF 技术,用双向静态切片锚定被测方法并抽取测试代码片段,提升抄袭检测效果。
JavaScript 库分析的合理最通用客户端
提出“合理最通用客户端”概念并实现 REAGENT,检测 JavaScript 库 TypeScript 声明文件中的类型错误。
迈向自动化的克隆检测器精度研究
提出半自动化克隆检测器精度评估方法,用自动分类减少人工验证并汇聚标注数据集。
C++ 开发者如何使用不可变性声明:一项实证研究
通过分析 7 个开源项目,实证揭示 C++ 开发者使用 const 表达不可变性的现状与漏标差距。
生成程序子程序自然语言摘要的神经模型
提出将代码词与 AST 结构分开编码的神经模型,在缺少内部文档时仍能生成连贯的程序子程序摘要。
基于神经机器翻译学习有意义的代码改动
首次系统评估神经机器翻译模型能否从 pull request 的代码改动中学习并自动复现开发者的修改。
七宗罪:基础设施即代码脚本中的安全坏味道
通过实证研究识别 IaC 脚本中的七类安全坏味道,并实现静态分析工具 SLIC 进行大规模检测与缺陷报告验证。
基于模型抽象与精化的 Android 应用实用 GUI 测试
提出动态优化 GUI 抽象模型的 Android 自动化测试方法,并实现工具 APE,显著提升覆盖率与崩溃发现能力。
DeepPerf:使用深度稀疏神经网络预测可配置软件的性能
提出 DeepPerf,用带 L1 稀疏正则的深度前馈网络和自动超参搜索,以更少训练数据更准预测可配置软件性能。
利用演化实现多 hunk 程序修复
提出 HERCULES,利用测试谱、代码相似性与版本历史定位演化兄弟并同时修复多 hunk 缺陷。
基于距离的软件配置空间采样
提出距离采样策略,按概率分布覆盖配置空间,提升性能预测模型精度。
学习发现并重构不一致的方法名
提出基于方法名与代码一致性的深度特征方法,自动检测不一致方法名并建议重命名,显著优于现有方法。
StoryDroid:自动为 Android 应用生成故事板
提出 StoryDroid,通过静态分析抽取 Activity 转移图并渲染 UI 页面,自动为 Android 应用生成可视化故事板。
LEOPARD:通过程序度量识别易受攻击代码以进行漏洞评估
提出基于程序度量的轻量可扩展框架 LEOPARD,通过复杂度分箱与漏洞度量排序定位潜在易受攻击函数。
FOCUS:一个用于挖掘 API 函数调用与使用模式的推荐系统
提出 FOCUS,用协同过滤推荐 API 方法调用和使用模式,提升成功率、准确率并降低运行时间。
JVM 实现的深度差分测试
提出 classming,通过活字节码变异生成有效可执行程序,对主流 JVM 实现进行深度差分测试并发现大量缺陷。
即时软件缺陷预测中的类别不平衡演化与验证延迟
首次揭示 JIT-SDP 存在类别不平衡演化,并提出考虑验证延迟的新方法以提升缺陷预测平衡性。
挖掘历史测试日志以预测缺陷并定位测试日志中的故障
通过去除通过日志中的噪声行,并用改进的TF-IDF与排他性KNN定位,捕获89%产品故障且仅标记不到1%失败日志行。
AutoTap:使用 LTL 性质合成与修复触发-动作程序
AutoTap 将用户期望性质翻译为 LTL,并自动合成或修复触发-动作程序。
IconIntent:基于图标分类的 Android 应用敏感 UI 组件自动识别
提出 ICONINTENT,结合程序分析与图标分类自动识别 Android 应用中敏感 UI 组件。
DLFinder:刻画与检测重复日志代码异味
通过人工研究归纳五类重复日志代码异味模式,实现静态分析工具 DLFinder 自动检测问题实例,报告 82 处且全部修复。
可扩展的测试套件缩减方法
提出一类高效的相似度测试套件缩减方法,仅用测试用例输入,在保持故障检测能力的同时大幅提升效率。
基于图的真实世界细粒度语义代码变更模式挖掘
提出基于图的 CPatMiner,从海量仓库中挖掘细粒度语义代码变更模式,并在开发者调查与对比中验证有效性。
重新审视自然软件
重新检验代码自然性,发现分隔符贡献显著,API 用法高度重复,图表示比 n-gram 更能捕捉代码模式。
从结构化自然语言规范自动生成精确的测试预言
提出 Swami,从结构化自然语言规范中提取测试预言并生成可执行测试,聚焦异常行为与边界条件。
ActionNet:基于视觉的编程截屏工作流动作识别
首次提出 ActionNet,用图像差分与 CNN 从编程截屏识别九类开发者工作流动作,并用于关键代码帧提取。
面向 Java 8 Stream 智能并行化的安全自动重构
提出基于数据顺序与类型状态分析的安全自动重构,将顺序 Stream 安全并行化或去并行化。
分析并支持在线代码示例的适配
通过大规模实证构建 Stack Overflow 代码示例适配分类体系,并实现辅助开发者交互式复用示例的 Chrome 工具。
工具选择至关重要:GitHub 项目中的 JavaScript 质量保证工具及其使用成效
用大规模 npm 项目数据与混合方法,量化 JavaScript 质量保证工具的采纳选择及其顺序对项目成效的时序影响。
冗余加载:一种软件低效指标
提出全程序剖析器 LoadSpy,定位并量化冗余内存加载,指导优化并获得显著加速。
能给我一份用于排查依赖冲突问题的堆栈跟踪吗?
提出 Riddle,通过自动生成测试并收集崩溃堆栈跟踪,暴露 Java 项目中的依赖冲突。
测试驱动的代码评审:一项实证研究
通过对照实验与访谈调查,揭示测试驱动代码评审对缺陷发现与开发者偏好的影响。
GR(1) 规约的符号化修复
提出两种符号化算法,为不可实现的 GR(1) 规约自动推断新假设,从而实现规约修复。
面向 Control-CPS 软件故障定位的基于系统辨识的测试预言
提出基于自回归系统辨识的测试预言,自动判定控制CPS物理轨迹正确性,提升故障定位效果。
面向代码搜索的主动归纳逻辑编程
提出交互式代码搜索技术 ALICE,用主动归纳逻辑编程从用户正负反馈中推断并精化逻辑查询。
通过随机差分测试寻找代码覆盖率工具中的缺陷
提出随机差分测试方法,通过检测 C 代码覆盖率工具报告不一致来发现大量缺陷。
Mimic:面向 Android 应用的 UI 兼容性测试系统
Mimic 是一个自动化 UI 兼容性测试系统,可跨设备、Android 版本和应用版本对比 UI 行为并检测兼容性问题。
面向变体密集型嵌入式系统的多面向自动化分析
提出模型驱动框架,用可变数据流与可配置硬件建模,经设计空间映射和变体感知验证自动选出最优系统变体。
迈向理解与推理 Android 互操作
首次形式化 Android 互操作语义,并基于此提出类型系统检测混合应用中的跨语言缺陷。
面向 Android 的动态切片
提出首个面向 Android 的动态切片工具 AndroidSlicer,支持异步回调、无需源码且开销低。
面向数据库支持的 Web 应用的以视图为中心的性能优化
提出 Panorama,一个以视图为中心、数据库感知的 Web 开发环境,帮助开发者理解 HTML 元素成本并探索性能与功能权衡。
腐烂的绿色测试
提出腐烂绿色测试问题,结合静态与动态调用点分析检测通过但断言未执行的测试,并实现 DrTest 工具。
活动中潜藏的模式:开发者如何管理上下文的实地研究
对10名工业界开发者的实地研究,揭示开发者将任务分解为具有不同目标的子单元,并呈现特定的排序模式与上下文维持方式。
检测不正确的构建规则
提出 build fuzzing:通过变异文件、触发增量构建并对比依赖图预期,自动发现构建规则中缺失的依赖。
IDE 中的交互式生产性能反馈
提出 PerformanceHat,将生产剖析信息构建为增量更新的全局性能模型并集成进 IDE,近实时预测生产性能影响。
利用使用上下文恢复压缩代码中的变量名
JSNeat 利用信息检索和三类使用上下文,从开源 JS 语料中恢复压缩代码的变量名,准确率显著优于现有方法。
邮件列表即流程:邮件列表中提交的可靠预集成追踪
提出语言无关方法,将邮件列表上补丁的早期修订与仓库最终提交关联,实现可靠预集成追踪。
关于敏捷软件开发实践的态度、信念与开发数据
通过 42 名学生的问卷与开发数据,揭示 Scrum 角色如何影响实践认知,并证明可从数据可靠识别 TDD 等敏捷实践。
SafeCheck:增强 Java Unsafe API 的安全性
提出字节码级内存检查器 SafeCheck,防止 Java Unsafe API 误用导致 JVM 崩溃。
基于渐进式符号执行的零开销路径预测
用渐进式符号执行提升训练覆盖率,实现无需插桩、可恢复预测误差的完整执行轨迹预测。
面向多线程程序验证的并行精化
提出并行精化框架,通过精化约束与学习子句共享,加速多线程程序验证。
模拟学生错误以评估自动评分的公平性
提出一组变异算子,通过模拟学生错误评估自动评分配置的公平性与完整性。
Superion:语法感知的灰盒模糊测试
为结构化输入的灰盒模糊测试引入语法感知的裁剪与变异策略,显著提升覆盖率与漏洞发现能力。
揭示软件文档问题
挖掘四类来源的878条文档相关记录,构建软件文档问题分类学并提出可操作建议。
ReCDroid:从缺陷报告自动复现 Android 应用崩溃
提出 ReCDroid,结合 NLP 与动态 GUI 探索从自然语言缺陷报告自动合成事件序列以复现 Android 应用崩溃。
挖掘软件缺陷:我们应考虑受影响的发布版本吗?
比较启发式与基于最早受影响发布版本的真实方法构建的缺陷数据集,并评估其对缺陷模型的影响。
DifFuzz:面向侧信道分析的差分模糊测试
提出差分模糊测试方法 DifFuzz,通过资源引导启发式检测时间与空间侧信道漏洞。
探究性别偏见对 GitHub 的影响
基于性别研究框架定量检验 GitHub 上的性别偏见效应,发现平台层面大多不可见,但女性工作更集中且沟通更克制。
论补丁正确性评估的可靠性
通过用户研究构建补丁正确性金标准,比较作者标注与自动标注的可靠性,揭示自动修复评估中的偏差。
二进制代码上的灰盒 Concolic 测试
提出灰盒 concolic 测试,用轻量插桩、无需 SMT 求解器地系统探索执行路径,覆盖率与缺陷发现均优于基线。
开源软件 Issue 讨论中信息类型的分析与检测
通过质性分析与监督分类识别 GitHub 开源项目 Issue 讨论中的 16 类信息。
源代码注释中的 960 万个链接:用途、演化与衰败
对约960万条源代码注释链接开展大规模实证研究,揭示其用途、演化与失效情况,并通过修复PR验证可修复性。
基于模式的 Q&A 网站观点挖掘
提出 POME,用自然语言解析与模式匹配对 Stack Overflow 中关于 API 的句子进行方面分类和极性判定,精度优于 Opiner。
SLF:无需有效种子输入的模糊测试
提出 SLF,在缺少有效种子输入时自动识别输入有效性检查并生成有效种子,提升模糊测试效果。
持续集成中反模式与退化的自动报告
通过分析构建日志与仓库信息,自动检测持续集成中的四类反模式并报告过程退化。
开发者在总结 Java 方法时的阅读行为:规模与上下文很重要
通过眼动实验揭示开发者在 Eclipse 中总结 Java 方法时更关注方法体,且方法规模与上下文影响阅读与总结策略。
众包的安全实现知识有多可靠?
对 Stack Overflow 安全代码建议的实证研究表明,不安全答案反而更受社区青睐,声誉机制无法帮助识别安全选择。
使用开源软件培养软件工程师:学生的视角
通过访谈与提交分析,揭示学生在软件工程课程中参与开源贡献的挑战、收益与态度。
基于搜索的 Android 能耗测试
提出 COBWEB,一种基于搜索的 Android 能耗测试技术,通过建模功能行为与上下文条件生成测试套件以发现能耗缺陷。
PIVOT:学习 API-设备关联以促进 Android 兼容性问题检测
提出 PIVOT,从 Android 应用语料学习并优先排序 API-设备关联,以支持碎片化兼容性问题检测。
使用 fMRI 与 fNIRS 解析数据结构操作的神经表征
通过fMRI与fNIRS人体实验揭示数据结构操作与空间推理共享但程度不同的脑区,并比较两种成像技术。
检查回归测试选择(RTS)工具的框架
提出首个检查回归测试选择(RTS)工具的框架 RTSCheck,在三个 Java RTS 工具中发现 27 个缺陷。
CTRAS:众包测试报告聚合与摘要
提出CTRAS,利用文本与截图自动聚合重复的众包测试报告并生成综合摘要,提升审查效率。
关联新手代码可读性、结构与理解:情况很复杂
研究 231 名新手对代码风格与可读性的判断,发现可读性偏好与代码理解相分离,并能预测其编码选择。
UML 图中的错误:软件工程课程学生项目分析
本文构建 UML 图错误目录,并据此分析软件工程课程中 123 名学生的 2700 余个图,揭示常见错误与演化规律。
为什么间歇性志愿者会留在 FLOSS 社区?
基于间歇性志愿服务模型调查 FLOSS 志愿者留存,发现社会规范、满意度与社区承诺正向影响留下意愿。
从业者如何认知编码熟练度
通过访谈与跨国调查识别出编码熟练度的38项技能,并发现21项被从业者评为重要。
基于意图的软件变体整合
提出整合意图与IDE工具INCLINE,以声明/撤销意图的方式将克隆变体整合为可配置平台,实验表明可减少整合错误。
面向软件工程学生的 DevOps 与持续交付教学中的产学研合作:迈向提升高等教育的工业相关性
报告产学研合作设计并实施 DevOps 与持续交付课程,探讨提升高等教育工业相关性的课程组织方式。
检测事件驱动 Node.js 应用中的原子性违反
提出 NodeAV,基于执行轨迹预测性检测 Node.js 事件驱动应用中的原子性违反。
利用工件树演化与复用安全案例
提出 SAFA,通过工件森林分析比较系统版本,定位安全案例受影响区域并给出更新建议,以支持安全案例的演化与复用。
探究多种依赖结构对软件缺陷的影响
系统研究句法依赖、历史共变和语义相似三类依赖结构对缺陷预测与定位的差异化影响。
计算机科学与编程在线学习偏好调查
通过205人调查揭示计算机科学学生与开发者的在线学习偏好、资源使用习惯与需求。
在乐趣中学习形式规约
介绍教育游戏 FormalZ,以深度游戏化方式帮助学生学习书写前后条件形式规约。
走过方法动物园:高等教育真的满足软件行业需求吗?
通过调查67门软件工程课程,比较高校教学方法与工业实践,发现二者总体接近但课程选择常受教学成功驱动。
软件工程项目式课程中能够实现多少真实性?
通过三个学期、64个团队的数据,评估首门软件工程课程中项目式真实性评估能实现的程度。
GreenBundle:捆绑处理对能耗影响的实证研究
实证表明将 MVC 转为带捆绑的 MVP,通过批量延迟视图更新可降低约 30% 能耗。
社会技术工作率增加与在线项目中的工作模式变化相关
通过调查与回归模型发现,GitHub 开发者短期工作率增加会改变沟通情感,但不导致技术与社交活动多任务。
通过需求相关知识的动态抽取与分类来支持分析师
结合 WFST 与可变特征向量 SVM,从交互记录和项目文档中动态抽取并分类需求相关知识,并以三个案例研究验证其有效性。
开发者会在厕所里发现新工具吗?
用混合方法评估“Testing on the Toilet”通讯能否提升开发者对开发工具的使用。
iSENSE:完成度感知的众包测试管理
提出众包测试关闭预测方法,依据缺陷趋势、到达与捕获-再捕获模型判断任务何时结束,兼顾缺陷发现与成本。
产品待办列表
通过长期参与观察提出产品待办列表既是工作模型又是边界对象,源于意义建构与协同演化。
AdJust:运行时缓解资源滥用的第三方在线广告
提出 AdJust,让发布者通过事件约束在运行时限制第三方广告的资源占用,缓解网页卡顿并提升加载与渲染体验。
FVT:面向软件开发教程“配音”的碎片化视频导师
提出 FVT 工具,用代码片段将视频教程片段与文本教程章节关联,提升开发者学习特定知识的效率。
ICSE 2019 工件评估主席致辞
介绍 ICSE 2019 技术论文工件评估流程:51 份提交,至少两位评委评审,合格者获徽章。
同行更远:社会资本对开源持续参与的影响
混合方法实证发现社会资本促进男女开源长期参与,但专家构成单一的团队对女性不利。
FLOSS 参与者对性别与包容性的看法:一项调查
通过对 15 个 FLOSS 项目的调查,揭示女性贡献者仍面临包容性障碍及参与者态度分歧。
为什么代码审查对开源软件社区有效?
通过访谈与参与观察揭示黑客伦理和内在/外在动机如何支撑开源代码审查的成功运行。
在顶点项目课程中与工业客户合作:客户视角
基于13家企业访谈,总结工业客户参与软件顶点项目课程的动机、合作方式与成效。
使用跨文化人物角色和同行评审向大规模学生群体教授以用户为中心的概念设计
提出用跨文化人物角色与同行评审,在大班额下教授以用户为中心的概念设计。
教授物联网(IoT)素养:一种系统工程方法
提出以系统为中心、重实践与产业合作的物联网课程,提升学生端到端系统工程能力。
软件工程教育中的双轨敏捷(Dual-Track Agile)
介绍一门在双轨敏捷下整合需求工程与交互设计的软件工程课程,并总结四年教学经验。
通过软件工程项目课程促进创业体验
报告将创业体验融入软件工程项目课程,以价值创造和过程反思为核心,并总结其利弊与教师建议。
看我能做什么:在 Living Lab 情境中习得编程技能
论文通过 Living Lab 中的视觉积木编程训练与两项用户研究,表明真实情境能促进初中生编程技能习得。
在大规模软件构造教学中使用掌握学习:案例研究
报告在约450人软件构造课程中应用掌握学习与自动评分,以微测验提升概念掌握。
碎片化课堂案例研究
通过澳大利亚区域大学软件开发教学案例,识别课堂碎片化类型并总结将其转化为多样性优势的策略。
关于转向以技术为导向的学生项目评分的经验报告
报告将软件工程课程评分从功能完成度转向技术运用,发现可提升弱生成绩并降低退课率,但课程评价下降。
ICSE 2019 社交媒体主席致辞
本文是 ICSE 2019 会议录中的社交媒体主席欢迎辞,不包含技术研究贡献。
ICSE 2019 SEET 主席致辞
ICSE 2019 软件工程教育与培训(SEET)主席的欢迎辞,介绍会议并致谢。
ICSE 2019 Web 主席致辞
ICSE 2019 会议录中 Web 主席的欢迎致辞,无技术研究贡献。
ICSE 2019 程序委员会
列出 ICSE 2019 程序委员会成员名单,本身不是研究论文。
ICSE 2019 大会主席致辞
这是 ICSE 2019 会议论文集的大会主席欢迎致辞,不含技术研究贡献。
ICSE 2019 程序委员会主席致辞
这是 ICSE 2019 程序委员会主席的欢迎致辞,并非研究论文,无程序语言领域技术贡献。
ICSE 2019 研讨会主席致辞
ICSE 2019 研讨会主席欢迎致辞,不含研究贡献。
ICSE 2019 工件评估委员会
列出 ICSE 2019 工件评估委员会成员及所属机构,本身不报告研究贡献。
ICSE 2019 Journal-First 分会主席致辞
ICSE 2019 Journal-First 分会主席的会议欢迎致辞,不涉及具体研究或技术贡献。
ICSE 2019 IEEE/ACM 41st International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET) 2019
ICSE 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE) 2019
ICSE 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE) 2019
ICSE 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE) 2019
ICSE 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE) 2019
ICSE 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE) 2019
2018174 篇 · Proceedings of the 40th International Conference on Software Engineering
基于概率推断的智能调试
提出概率推断调试技术,融合人类推理与程序语义以定位最可能故障语句。
针对堆性质的静态自动程序修复
用分离逻辑静态推理程序片段语义效果,无需测试用例即可修复指针安全缺陷并验证补丁正确性。
自动生成 concolic testing 的搜索启发式
提出自动生成 concolic testing 搜索启发式的方法,通过参数化启发式搜索最优策略,提升覆盖率和缺陷发现。
DeepTest
面向 DNN 驱动的自动驾驶汽车,提出/介绍 DeepTest,以支持其测试与部署前的可靠性验证。
深度代码搜索
指出传统代码搜索仅依赖文本相似度、缺乏语义理解,并指向深度代码搜索方向。
面向实用程序修复的按需候选生成
提出按需生成候选的程序修复思路,缓解生成-验证式修复中候选数量过大带来的低效问题。
面向测试的 SAT 解高效采样
提出 QuickSampler,以少量 SAT 求解器调用高效生成大量满足约束的解,用于测试。
GUILeak:检测 Android 应用中用户输入数据的隐私泄露
提出 GUILeak,自动检测 Android 应用对用户输入数据的隐私泄露并判定其是否违反隐私政策。
面向入门编程作业的神经符号程序校正器
结合RNN语法修复与约束推理,自动修复入门编程作业中的错误程序。
切分式符号执行
提出切分式符号执行,通过切分/裁剪缓解路径爆炸与约束求解限制,以到达更深代码。
使用参考实现的语义程序修复
以参考实现为隐式规约,通过符号分析推断预期行为并合成条件等价补丁,缓解测试过拟合。
时空上下文归约
提出基于指针分析的静态分析工具 CRed,通过时空上下文归约高效检测 C 程序中的 Use-After-Free 漏洞。
迈向最优的 concolic 测试
将最优 concolic 测试策略归约为带代价马尔可夫决策过程,并提出贪心近似算法。
基于行为类型的 Go 消息传递静态验证框架
提出基于行为类型的静态验证框架,用于检查 Go 通道消息传递程序的并发正确性。
修复 Android 应用中的崩溃
提出首个自动修复 Android 应用崩溃的技术,通过八种变换算子与搜索式修复框架 Droix 实现。
面向一致性领域特定模型自动生成的图求解器
提出直接在图结构上求解的图求解器,用于自动生成满足元模型与良构约束的大规模一致领域模型。
在线论坛代码片段中 API 完全限定名的统计学习
提出 StatType,用统计机器翻译与共现知识为论坛代码片段中的 API 推断完全限定名。
基于 reducer 的条件验证器构造
提出基于 reducer 的构造方法,将现有验证器改造成能够接收并利用条件的条件验证器。
基于图变换的软件工程多粒度冲突与依赖分析
提出多粒度静态冲突与依赖分析算法,高效计算二元、粗粒度与细粒度结果。
不仅通过示例编程
提出超越纯示例的交互式程序合成意图表达方式,允许程序员参照生成程序的具体部分来精化意图。
UFO:精确预测并发释放后使用漏洞
提出 UFO,通过扩展最大线程因果模型与约束求解,从单次轨迹精确预测并发 UAF,无假阳性且可扩展。
是时候清理你的测试目标了
提出基于最弱前置条件与SMT的测试目标剪枝技术,剔除不可行和冗余的覆盖目标。
推断与断言分布式系统不变式
提出推断并断言分布式系统不变式的方法,以辅助调试和理解分布式系统。
基于模型计数的目标冲突可能性评估
提出以模型计数量化目标冲突发生可能性,服务于目标导向需求工程的风险评估。
感知启动模式的上下文敏感 Activity 转换分析
提出 Chime,按启动模式区分 Activity 实例,上下文敏感建模 Activity 转换,提升 Android 静态分析精度。
异常处理违规修复的全局感知推荐
针对异常处理中的违规,提出全局感知的修复推荐思路。
正则性质的符号验证
提出符号正则验证 SRV,通过路径切片与引导缓解路径爆炸,高效验证程序的正则性质。
自动程序修复与测试套件度量之间的相关性研究
大规模实证揭示测试套件度量(语句覆盖、分支覆盖、变异得分)与自动修复可靠性的相关性,语句覆盖趋势最强。
ChangeLocator:定位引发崩溃的代码变更
提出 ChangeLocator,基于学习模型从崩溃报告桶中自动定位引发崩溃的代码变更。
集合式程序分析
提出集合式程序分析,利用分析相关相似性聚类程序,仅分析每类代表以大幅加速大规模控制/数据流分析。
数据流隧道(Dataflow Tunneling)
提出 Dataflow Tunneling,暴露请求式应用中框架隐式建立的跨请求处理方法数据依赖,以支持跨请求分析。
面向更好自动程序修复的上下文感知补丁生成
通过上下文感知补丁生成,缓解自动程序修复中正确补丁不在搜索空间或搜索空间过大而难以生成的问题。
在提交历史中准确且高效地检测重构
提出面向提交历史的重构检测方法,提升准确性并降低对阈值与项目构建的依赖。
使用可学习进化算法测试基于视觉的控制系统
提出结合多目标进化搜索与决策树分类的可学习进化测试算法,能更高效地为视觉控制系统生成关键测试场景并刻画关键区域。
从 UI 设计图像到 GUI 骨架
提出神经机器翻译器,无需手工规则即可将 UI 设计图像自动转换为 GUI 骨架。
自动软件修复
该文论述自动软件修复的必要性,指出调试自动化需从故障定位推进到自动合成修复。
在线问答论坛中的代码示例可靠吗?
通过 ExampleCheck 挖掘 GitHub API 使用模式,发现 Stack Overflow 上 31% 的帖子可能存在 API 误用。
DeFlaker
提出 DeFlaker,旨在高效检测与最新代码修改无关的 flaky test,避免昂贵的重复运行。
基于测试的程序修复中补丁正确性的识别
针对基于测试的自动程序修复中错误补丁泛滥的问题,研究如何识别补丁的正确性。
“更好的数据”比“更好的数据挖掘器”更好吗?
本文指出现有软件分析分类器排序存在系统性偏差,并证明用 SMOTUNED 改善训练数据比仅优化分类器更能提升缺陷预测。
CCAligner
提出基于代码窗口与编辑距离的 CCAligner,高效检测大规模差距克隆并兼顾通用克隆检测。
变异得分与真实故障检测相关吗?
揭示变异得分与真实故障检测的相关性受测试套件大小混杂影响,控制后相关性很弱。
面向可扩展的基于相似度测试用例优先级排序的 FAST 方法
提出 FAST 系列技术,借助大数据中的相似项检索算法,实现可扩展的白盒与黑盒相似度测试用例优先级排序。
Perses
提出 Perses,旨在比 Delta Debugging、HDD、C-Reduce 更快速、高质量且通用地缩减触发特定性质的程序。
移动应用 GUI 设计违规的自动报告
针对移动应用设计稿与代码实现之间的鸿沟,提出自动报告 GUI 设计违规以替代人工逐屏核对。
FaCoY:一种静态查找语义相似代码片段的代码到代码搜索方法
提出 FaCoY,通过查询改写静态搜索与输入代码语义相似的代码片段。
编译错误修复
提出 TRACER 系统,面向入门程序员对编译错误进行教学导向的自动修复。
HireBuild:历史驱动的构建脚本修复
提出首个自动生成构建脚本补丁的方法 HireBuild,利用历史修复模式与构建日志相似度修复 Gradle 构建失败。
RESTful Web API 的蜕变测试
论文聚焦 RESTful Web API 的蜕变测试;所给摘要仅说明 Web API 的普及与调用规模,未展开具体贡献。
用模态蕴含图传播配置决策
提出模态蕴含图预计算中间值,显著加速高度可配置系统的无回溯配置决策传播。
识别 fork 中的功能特性
提出 Infox,通过代码聚类与信息检索自动识别 fork 中未合并的功能特性,并为活跃 fork 生成概览。
论代码坏味的扩散性及其对可维护性的影响
通过实证研究分析代码坏味的扩散程度及其与软件变更/故障倾向和可维护性的关系。
上下文感知的对话式开发者助手
提出 Devy,一个上下文感知的对话式开发者助手,通过语音意图推断与自动上下文模型调用底层工具工作流,减少手工命令。
坏味道的气味
概述代码坏味道作为技术债因素的研究,并指出已有检测与重构建议工具,但未提出新方法或评估结果。
ConflictJS:JavaScript 库冲突的自动化分析
提出 ConflictJS,用两阶段动态分析与定向测试合成自动检测 JavaScript 库间全局命名空间冲突。
当测试遇上代码审查
通过大规模代码审查数据与开发者访谈,揭示测试文件评审与生产代码评审的差异及工具改进需求。
使用 SLforge 自动发现商业信息物理系统开发工具链中的缺陷
提出 SLforge,面向 Simulink 等商业 CPS 工具链自动生成模型并差分测试,以发现工具链缺陷。
识别源代码中的设计问题
通过多轮工业实验构建扎根理论,揭示开发者如何在源代码中识别设计问题及其症状特征。
求解最优特征选择问题的多目标整数规划方法
揭示软件产品线最优特征选择的多目标二值整数线性规划本质,并提出可线性时间生成完整Pareto前沿的高效方法。
Enlighten:反馈驱动的交互式故障定位
提出交互式反馈驱动的故障定位技术 Enlighten,用开发者对数据正确性的反馈逐步缩小可疑范围。
修复诱发变更是一个移动目标吗?
该文讨论 JIT 缺陷预测的优势,并追问修复诱发变更是否随时间变化而成为移动目标。
不可复现构建的自动定位
面向不可复现构建,提出自动定位方法以降低人工搜索成本并识别致因。
跨项目缺陷预测方法的基准比较研究
复现并基准测试2008—2015年间24种跨项目缺陷预测方法,以统一比较其性能。
面向 Android 的时序权限分析与强制执行框架
提出 Terminator,用时序逻辑模型检测识别 Android 应用的权限威胁,并在运行时按安全状态临时授予或撤销权限。
基于语义的自动程序修复中的过拟合
系统刻画基于语义的自动程序修复中的过拟合现象,发现其与启发式修复类似地以多种形式出现。
细粒度测试最小化
提出细粒度测试最小化方法,在测试语句级去除冗余,同时保留覆盖率与断言。
理解开发者对弃用作为语言特性的需求
通过访谈与问卷揭示 Java API 开发者对弃用机制的需求,并提出三项增强方案。
面向重构感知的回归测试选择
提出重构感知的回归测试选择思路,避免将行为保持的重构视为影响测试的变更,从而减少不必要的测试执行。
调试响应式程序中的数据流
针对响应式编程缺乏调试工具的问题,研究如何调试其数据流。
EnMobile:基于实体的移动应用行为刻画与移动恶意软件检测
提出以实体及其交互来源刻画移动应用行为的静态分析方法 EnMobile,用于签名式恶意软件检测,精度与召回率显著优于四种已有方法。
面向 RFC 的 SSL/TLS 实现证书验证差分测试
提出由 RFC 自动提取规则并经动态符号执行生成证书的差分测试方法,用于发现 SSL/TLS 证书验证漏洞。
Android 应用中的自我隐藏行为
对 Android 应用的自我隐藏行为进行刻画,并提出静态分析检测方法以区分恶意与良性应用。
Deuce:面向自动程序变换的直接操作式结构感知代码编辑器
提出结构感知编辑器 Deuce,通过点击控件结构化选择并直接操作程序变换,用户研究显示其优于传统文本选择。
从执行轨迹中推断层次化模体
提出从执行轨迹推断可容忍小变化的层次化重复模体,并实现可视化工具 Sabalan,提升程序理解准确率。
利用程序分析减少移动应用中的用户感知延迟
提出 PALOMA,一种通过静态程序分析自动插桩 Android 应用以预取 HTTP 请求、降低用户感知网络延迟的技术。
轻量级、抗混淆的 Android 恶意软件检测与家族识别
提出 RevealDroid,用轻量特征与机器学习实现 Android 恶意软件检测及家族识别,并抵抗混淆。
Speedoo
提出 Speedoo,按架构影响与优化潜力排序方法,并定位应成组优化的优化空间以指导性能优化。
使用扩展单元与符号化告警过滤的 C 程序精确 concolic 单元测试
提出 CONBRIO,通过扩展单元构造真实上下文并用符号调用上下文过滤误报,实现精确的 C 程序 concolic 单元测试。
Nemo:多准则测试套件最小化框架
将多准则测试套件最小化建模为整数非线性规划并转换为线性规划,以高效求最优解。
MSeer:多缺陷并行故障定位技术
提出 MSeer,通过聚类失败测试并行定位多缺陷,提升多缺陷程序的故障定位效果与效率。
自动程序修复技术能修复困难且重要的缺陷吗?
考察自动程序修复技术能否修复开发者认为重要或手动修复困难的缺陷。
使用隐马尔可夫模型预测缺陷修复时间
提出用隐马尔可夫模型建模开发者活动的时序,以预测 Firefox 缺陷报告的修复时间。
ENTRUST
围绕 ENTRUST,关注自适应软件在可变负载、组件故障等不确定性下的可信工程。
DroidStar:Android 类的回调 typestate
提出回调 typestate 概念,用有限状态机刻画 Android 异步组件交互协议,并指出规格编写困难。
迈向复用历史修复中的线索
通过六种重叠度量实证研究历史修复能否为自动程序修复提供可复用线索。
程序拼接(Program Splicing)
提出程序拼接方法,通过程序合成器与可检索的代码片段数据库交互,自动将草稿补全为满足需求的程序。
作为软件工程项目的 Game Boy 优化编译器开发
报告一门硕士软件工程课程中,学生团队在一学期内开发 Game Boy 优化编译器的经验与课程改进建议。
语义耦合与软件类共变之间相互作用的实证研究
通过实证研究考察软件类语义耦合与共变的关系,为变更影响分析提供经验依据。
关于在工业界应用软件测试学术成果的经验报告:期刊首次展示
作者基于从学术界到工业界五年的亲身经历,反思软件测试研究成果在工业实践中的低采用率及成因。
正确性吸引
通过系统性执行扰动与完美判定,发现软件常在扰动下仍保持输出正确,并将此现象命名为正确性吸引。
协作式模型驱动软件工程
报告一项已发表于 IEEE TSE 的协作式模型驱动软件工程研究。
从未插桩应用程序的交互中推断开发活动
针对工具插桩困难和行为数据低层细粒度的问题,研究从未插桩应用交互中推断高层开发活动。
模型驱动工程中的事后类型化
针对模型驱动工程中模型必须符合元模型抽象语法的问题,提出事后类型化(a posteriori typing)思路。
软件工程中的情感分析
指出通用情感分析工具在软件工程数据上不可靠,主张针对具体使用场景进行定制化。
Java 中的安全编码实践
通过 StackOverflow 帖子实证研究 Java 安全编码中开发者关注点、障碍与不安全实践。
在线应用评论分析以识别新出现的问题
提出自动化框架 IDEA,基于在线应用评论分析及时、精准地识别应用新出现的问题。
MAHAKIL:基于染色体遗传理论的软件缺陷数据集合成过采样方法
提出基于染色体遗传理论的合成过采样方法 MAHAKIL,缓解软件缺陷数据类别不平衡并提升预测性能。
重新审视开源软件的入门障碍
通过现场研究揭示开源软件工具与基础设施中的入门障碍,并指出其中多数带有性别偏见。
混合回归测试选择
提出首个混合粒度回归测试选择方法 HyRTS,结合方法级与文件级分析以提升测试选择效果并降低测试时间。
Android 应用中框架特定异常的大规模分析
对 2,486 个 Android 应用的大规模异常进行实证分析,揭示框架特定异常特征并构建定位工具。
为社交编程增添光彩
通过大规模混合方法研究揭示 npm 仓库徽章作为质量信号的有效性与局限。
现实世界中的可追踪性
利用 issue 与代码变更特征训练分类器,自动推荐缺失的 issue 标签,补全提交与 issue 间追踪链接。
差一点:开源项目中准贡献者为何失败
通过分析21个GitHub项目的准贡献者,揭示其PR被拒原因及对继续参与的抑制影响。
大规模实证研究:代码混淆对 Android 应用与反恶意软件产品的影响
通过混淆 6000 个应用生成 7.3 万样本,大规模实证评估代码混淆对 Android 反恶意软件检测效果的影响。
现代新闻聚合器如何帮助开发社区塑造与分享知识
通过访谈与调查 Reddit 和 Hacker News 开发者,揭示其知识分享动机、内容类型与治理挑战。
论程序员调试行为的二分性
通过问卷、IDE埋点与访谈揭示程序员调试行为分化:IDE调试器使用率低,printf调试仍普遍,高级功能知识不足。
重新定义优先级排序
将 CI 中的优先级排序对象从测试套件改为提交,提出基于失败与执行历史的轻量持续排序方法。
如何(不)组织数据库支撑的 Web 应用
系统研究 ORM 数据库 Web 应用中的常见性能反模式、性能影响与修复建议。
Augusto
针对现有GUI测试生成方法不推断执行功能、遗漏语义交互的问题,介绍Augusto。
面向软件开发的情感极性检测
指出现有通用情感分析工具在软件开发文本上误分类技术术语,影响实证研究结论效度。
我的贡献是否得到了公平评审?
基于公平理论提出代码评审公平性框架,并通过 OpenStack 实证调查揭示不公平感知与排序偏见。
敏捷软件工程项目中个性化评估与反馈的持续交付
针对敏捷软件工程课程项目评审难以规模化、反馈不及时的问题,提出个性化评估与反馈的持续交付方案。
Web 页面移动友好问题的自动修复
提出一种自动修复网页移动端友好问题的方法,在95%评估对象上成功,并经用户研究验证修复版更受偏好且更易读。
DetReduce
针对 Android GUI 自动测试生成的冗长测试轨迹,DetReduce 旨在支持简洁回归测试套件。
基于搜索的 SQL 查询测试数据生成
将 SQL 查询测试数据生成建模为搜索问题,GA 利用查询计划引导,在 2135 条查询上完全覆盖 98.6%。
移动中的软件保护
该论文关注真实移动开发者如何在软件工程实践中使用混淆来保护移动软件。
程序员在夜间或周末工作吗?
通过 86 个开源项目的提交时间戳首次大规模实证刻画软件工程师的工作时段,发现多数人遵循典型办公时间。
你还记得这段源代码吗?
通过60名开源开发者的调查与版本控制数据分析,实证揭示开发者对源代码的遗忘规律及影响因素。
通往实时编程之路
通过对 Pharo 等实时编程环境中的编程会话进行实证研究,揭示实时特性如何影响开发者的工作与导航。
计算机科学与工程毕业生是否已为软件行业做好准备?
报告暑期学校如何弥合毕业生与软件行业技能差距,并评估其对新员工和企业的双向收益。
泛化数据结构合成
将数据结构合成从单一集合子集操作扩展到多相关集合与求和、计数、最值等聚合属性。
评估软件演化中未跟踪变更的威胁
实证研究发现10%–21%方法级变更未被重构跟踪,并显著影响MSR分析,需系统性处理。
测量程序理解
通过大规模现场研究,测量专业开发者超越 IDE 交互的程序理解活动,弥补以往受控小样本研究的不足。
分发,还是不分发?
通过人工分析 1,200 条开源许可讨论,构建许可 bug 分类目录并揭示其影响与新型 bug。
何时不注释
通过混合方法研究 C++ API 文档缺失与修复动因,指出更新文档未必有价值且维护者常不愿投入。
软件工程实验中的统计错误
调查ICSE实验论文中的统计错误,发现约30%存在多种统计问题。
课堂中的开源软件
总结五年 Expertiza 课程中 313 个开源课程项目的经验,归纳学生贡献的 13 类常见错误并提出 5 条改进建议。
10+ 年使用 iTrust 教授软件工程的经验
总结北卡州立大学软件工程课程25学期使用iTrust大型遗留项目的经验教训、教学反馈与课程改进。
分析 GitHub 中测试驱动开发的效果
通过挖掘 GitHub 仓库,比较不同程度采用 TDD 的项目,未发现可观测收益。
理解技术问答网站中快速回答的影响因素
指出技术问答网站激励系统应关注回答速度,并聚焦快速回答的影响因素以改善用户体验。
增广与结构化用户查询以支持高效的自由形式代码搜索
通过增广与结构化用户查询,缓解代码搜索中的词汇不匹配问题,支持高效自由形式代码检索。
使用上下文感知 Q&A 教学框架提高高等教育中的学生参与度
提出上下文感知 Q&A 教学框架,将提问与讲课情境自动关联,提升大班课堂学生参与度与考试表现。
一种暴露非标称行为的组合方法
提出 Combi-CCM:用结构化需求模式和 IPOG 组合生成暴露非标称行为,降低人工与时间成本。
软件团队中的数据科学家
基于793名微软数据科学家的调查,刻画其背景、工作主题、工具使用与活动聚类,并总结挑战与最佳实践。
通过代码配方降低新手程序员的物联网开发难度
提出面向物联网新手程序员的“代码配方”,以语言与运行时无关的文档模块降低异构组件集成门槛。
整合技术债管理与软件质量管理流程
指出技术债管理缺乏系统化流程,主张将其与软件质量管理流程整合。
在基于搜索的软件工程中是否保留无效解
通过七个真实软件产品线的实证研究,探讨多目标进化搜索中保留无效解的影响,并给出保留有效解的经验指导。
EARMO
提出 EARMO——在控制能耗的同时自动改进移动应用架构的多目标重构方法。
动手编码的软件架构师在五个工业案例中的角色与影响
五项工业案例实证表明:架构师写代码有助于质量,架构战术比功能更易出错,但架构师引入缺陷更少。
AB/BA 交叉设计研究中的效应量及其方差
针对 AB/BA 交叉设计等重复测量实验设计,讨论并处理软件工程文献中未涉及的效应量及其方差问题。
盲人与视力正常程序员程序理解策略的比较
对比盲人与视力正常程序员的程序理解策略,考察逐词朗读阅读是否影响代码理解。
语法高亮对编程新手有帮助吗?
重新审视现代 IDE 中语法高亮是否帮助编程新手理解程序,并指出现有证据不一致。
为 Web 应用测试执行优先排序浏览器环境
提出六种基于近期与频繁失败信息的浏览器环境优先级技术,加速 Web 应用回归测试的失败反馈。
利用推荐系统改善集成开发环境命令知识
研究表明命令推荐系统能帮助计算机科学学生掌握更多 IDE 命令,且非个性化流行度算法接受度最高。
让 Liskov 替换原则快乐与悲伤
提出用笑脸/哭脸视觉助记法帮助学生记忆 LSP 的前置/后置条件强化与弱化规则。
使用主题模型预测 IDE 中开发者的未来行为
利用主题模型对 IDE 交互数据建模,以预测开发者未来行为。
构建数据密集型数据迁移系统的经验与挑战
分享构建可扩展、容错且具QoS保障的数据密集型数据迁移系统的经验与挑战。
研究 Google Play 免费应用中用户与开发者之间的对话
研究 Google Play 免费应用中用户与开发者通过应用评论与回复展开的对话。
制品变更在任务间的传播是否反映工作依赖?
本文检验跨任务的制品变更传播是否与开发者建立的任务链接所表达的工作依赖相一致。
漏洞是否像其他缺陷一样被发现和解决?
探讨漏洞是否通过不同于非安全缺陷的开发实践被发现和解决,以判断该差异能否用于过程改进。
虚拟环境与物理环境性能测试结果差异的实证研究
通过实证研究揭示虚拟环境与物理环境性能测试结果的差异,并强调虚拟化开销可能导致结果失真。
分析十年间的 Linux 系统调用
对 Linux 系统调用 2005–2014 十年间的 8,770 项变更进行实证研究,揭示内核 API 演化与设计决策。
安全风险评估中的模型理解
通过两项跨国用户实验比较表格与图形风险模型,发现表格表示在安全风险理解上更精确、更完整。
开源系统中的继承使用模式
通过分析14个开源系统的2440个继承层次,揭示继承实践模式并给出可自动检测的质量评估指标。
基于搜索的 OCL 约束自动化重构
提出基于搜索的 OCL 约束自动重构方法,以提升约束的可理解性与可维护性。
软件工程技术文献中证据调查的挑战与陷阱
讨论实践者在软件工程技术文献中搜集证据以支持技术采纳时遇到的挑战与陷阱。
软件初创企业中需求实践的演化
用扎根理论刻画16家初创企业成长中需求实践沿六个维度的演化及转折点。
软件工程中的定性研究综合
系统梳理软件工程系统文献综述中定性研究综合方法的使用现状,揭示方法理解缺口与选择因素。
参与面向工业客户的 capstone 项目如何影响学生态度?
通过访谈与问卷追踪 Scrum capstone 课程前后学生态度变化,发现协作沟通重要性认知提升、新技术学习难度低于预期。
软件工程教育中体验主义的维度
介绍UCOSP计划,说明体验式开源软件工程教育如何弥合课堂与职场技能差距,并回顾8年参与规模。
软件开发教育中性别多样性的障碍
通过丹麦 ITU 软件开发本科的探索性案例研究,识别女性参与的社会文化障碍与预科编程技能性别差异。
万物皆相互关联
提出软件工程可持续性(SE4S)暑期学校课程蓝图,并总结教学经验以支持课程复现与改进。
评估 K-6 学习者在基于项目的 Scratch 工作坊中的软件开发技能
通过五天项目式 Scratch 工作坊与评分量规,评估 K-6 学生能否习得并运用基础软件开发实践。
什么造就了优秀的软件工程经理?
通过混合方法实证研究,构建软件工程经理特质框架,发现技术能力并非优秀管理者的标志。
利用主动视频观看增强软件工程学生与专业人员培训
提出将主动视频观看用于软件工程软技能培训,并介绍 AVW-Space 平台及课程实践。
重新构想软件项目管理课程
介绍一门经七年迭代的研究生软件项目管理课程:学术阅读、课前测验、短讲、工作簿活动和多阶段项目,以应对教学难题。
设计者主导的隐私
本文探讨隐私设计(PbD)将隐私责任转移给软件开发者后,开发者对信息隐私的认知、解释与实践问题。
在研究生软件测试课程中使用 JiTT
报告在研究生软件测试课程两个学期应用即时教学(JiTT)的师生评估经验。
老年人与黑客马拉松:促进老年参与者参与软件开发
通过年轻人与老年人共同参与的黑客马拉松案例,总结促进老年人参与软件开发的良好实践。
利用乐高 Scrum 模拟为软件过程改进教育提供基线
提出用乐高 Scrum 模拟让学生在课程中直接体验软件过程改进,并建立教学基线。
软件工程实验课
指出现有软件工程教育缺少软件开发与维护的实验课,并论证顶石项目无法替代有教学计划的 SE 实验课。
好、坏与丑
研究安全专家、计算机科学家与管理者的安全决策模式差异及其对系统安全的影响。
面向大规模学生群体的本科软件工程课程重设计
报告面向大规模学生群体重新设计本科二年级软件工程课程的研究。
Steam 平台上抢先体验游戏的实证研究
对 Steam 平台抢先体验游戏进行实证研究,分析该发行模式与开发者-玩家沟通机制。