一段程序能够运行,并不代表它的行为就符合开发者的意图。特别是当代码从单机走向数据库、云服务或人工智能系统时,一个看似微小的边界条件,可能让结果与设计目标完全偏离。对软件工程博士而言,科研训练的一部分就是学会把这种“好像哪里不对”的直觉,变成能稳定复现、能解释成因的证据。
香港中文大学(深圳)数据科学学院的巴金声助理教授研究软件工程与数据科学的交叉,重点关注软件行为的语义分析以及关键数据系统的可靠性。学校师资介绍明确提到,他的工作发现了两百多个此前未知的软件漏洞与缺陷,研究论文曾两次获得 ACM SIGSOFT 杰出论文奖。与其把这些成果当成一串亮眼数字,不如追问:发现一个漏洞之前,研究者究竟需要设计怎样的观察方法?
假设你发现某个数据库操作在极少数输入下返回异常,最直观的处理是把这条输入记录下来。但研究者还需要区分异常是否来自并发顺序、状态同步、数据类型转换或系统依赖。只有当问题能够被隔离到稳定的触发条件,才有可能向更广泛的系统推广。这里所举的是方法上的假设示范,并非巴金声教授某篇论文的具体实验。
研究训练不是把 bug 数量累积起来
有价值的软件分析研究,必须面对误报和漏报。静态分析可能提示某条路径存在风险,真实执行时却因为程序约束而永远不会走到;动态测试能够找到一处错误,却未必说明类似错误还藏在哪些结构中。博士研究要追问的正是可推广性:从一个失败案例抽象出什么规律,为什么这个规律适用于更多程序,而不仅是这一段代码。
巴金声的履历横跨新加坡国立大学博士训练、苏黎世联邦理工学院博士后阶段和现任数据科学学院教职。他的研究成果发表于软件工程、数据库和系统安全的重要学术会议。这样的背景显示,学生若只会完成应用开发,可能还需要补上系统化实验、程序语义与研究性写作能力;而做过形式化验证、测试框架或数据库内核的人,则有机会把既有经验带进同一个问题。
申请材料最容易犯的错误,是把“负责项目后端开发”和“在某软件系统中发现可靠性问题”混写成一句话。前者说明承担过工程任务,后者还需要呈现假设、测试、对照和结论。假设一个候选人曾开发自动测试工具,就应进一步说明用什么方式生成测试样本,怎样判断输出是否错误,以及工具在何种情况下仍然会失效。
这里还包含一项对博士训练很关键的能力:研究者必须能够承认方法的适用范围。有时准确率更高的工具会显著增加运行成本;有时发现的漏洞数量更多,却包含了许多不影响真实系统的误报。论文必须解释这种取舍。科研判断不是为每一项指标寻找漂亮表述,而是知道哪些证据足以支持结论。
学院如何把这些能力变成培养任务
理解一篇系统可靠性论文时,最值得慢读的部分,往往是作者怎样选择对照。如果新工具能发现已有工具遗漏的错误,作者是否解释了输入样本的生成方式?有没有在不同程序版本和不同运行环境下复验?一项改进只有在这些条件被说明后,才可能从漂亮的案例走向可被同行检验的研究结果。
香港中文大学(深圳)数据科学学院已公布2027年秋季数据科学与计算机科学博士项目招生安排,采用申请制、滚动录取;数据科学博士项目的正式课程说明包含至少二十七学分以及相应学业要求。课程与研究不是互相替代的:算法、数据库系统和统计基础有助于理解现有方法,长期研究则要求学生亲自决定应该检验什么。不同专业方向的具体课程应以录取项目规定为准。
学校对符合条件的优秀博士生设置竞争性资助,包括可能的全额学费减免及年度生活津贴,津贴金额依奖项类别与评估结果不同,并有定期复核。巴金声教授的个人师资页面则明确提到有面向2027年春季及秋季的博士和哲学硕士开放名额。这两条信息分别说的是学校制度和导师的招生窗口,不能合并成某位申请者已经获得指定经费的承诺。
初次阅读一位软件研究者的工作时,不妨观察论文怎样定义“错误”。有些错误关乎程序输出,有些关乎权限和机密性,有些关乎系统在重复运行中的一致性。只看到标题里的“可靠性”并不能判断匹配;真正的匹配要能够落到一种自己熟悉的系统、一类有意义的故障,以及一套可被其他人复现的分析过程。
如果需要从工程经历转向研究陈述,可以选一项实际遇到过的故障,在保持事实真实的前提下拆开:最初为什么怀疑系统存在问题,采用了哪些测试条件,哪种解释后来被排除,又是什么证据让你接受最后的判断。这样写出的段落不必承诺解决整个软件安全领域,却能让研究潜力变得清晰。
博士阶段最难的训练之一,是反复提出能够被否定的猜想,再把失败变成新的实验设计。从这点看,发现漏洞只是起点;理解漏洞为什么会出现,才是可以继续延展的研究。





