1、百度工程能力工程标准V1 . 0前言 自1 9 6 8 年软件工程被首次提出,到今年刚好是5 0 周年。在这半个世纪的时间里,质量和效率是软件工程领域永恒的主题。人类自第一次工业革命以来,解决质量和效率问题的不二法门就是自动化、自动化、再自动化。智能化更是自动化的一种高级形态。然而在当今企业中,这样的一个根本方法却被人们无意或有意的忽视。说无意忽视,是因为在企业中负责工程能力建设的人可能缺乏工程经验,心中眼中只有流程。仿佛流程顺了,即便大都靠人工执行,也心安理得。说是有意,则是因为软件行业中原有的分工等原因,自动化的导入带来分工模糊、岗位重要性变化等诸多不确定性,缺乏引入的意愿。本人无意贬低流
2、程,而是更推崇自动化和智能化的流程,更无意非议职责分工,而是更推崇自动化和智能化解放人,使每个人都能更多从事创造性的工作。 创造性的工作。 人们对于人与世界、人与人的关系的认知,在过去的半个世纪里并无显著突破,这些认知又进一步决定了流程优化的上限,仿佛一道透明天花板,人人可感,却无从突破。另一方面,A B C 技术(A - A I 人工智能、B - B i g D a t a 大数据、C - C l o u d 云计算)突飞猛进、日新月异。如果工程能力的建设无法站在A B C 技术进步的巨人肩膀上做创新,那是软件工程领域在这个时代的悲哀。 互联网公司关注快速迭代,天生具有追求卓越工程能力的基因
3、,百度作为技术立身的企业,创立早期便启动了研发流程自动化的工程能力建设,需求流转、文档阅读、代码搜索、程序分析、软件测试、制品部署、服务监控、用户反馈等覆盖研发全流程的工具平台积累,涉及到S e r v e r 、A p p 、S D K 、A I 算法模型、自动驾驶等异构产品业务形态。4 0 余个工程实践环节,积累了4 0 余个可插件化接入的平台,在公司内被广泛使用。在这些实践和平台运行的同时,一个新的金矿正在悄然生成,那就是软件工程大数据。如今我们依托百度领先的A B C 技术和工程能力建设经验,将公司积累的5 0 0 多亿条软件工程数据进行处理,其中锤炼出的技术用于代码推荐、缺陷检测、智
4、能测试、智慧运维等领域。今年百度承接了国家重点专项基于编程现场大数据的软件智能开发方法和环境,与国内软件工程领域实力顶尖的1 5 所高校一同建设中国未来的智能大数据的软件智能开发方法和环境,与国内软件工程领域实力顶尖的1 5 所高校一同建设中国未来的智能软件开发平台。 作为百度内部以工程卓越、毕生所求为使命的一群人,我们一边支持公司业务打胜仗,一边努力探索工程能力建设的新方向,心中充满着欣喜。并非常渴望能将我们的理解和主张向行业分享,共同进步。然而由于工程能力体系庞大、平台众多,一时无法穷尽,所以我们将这个体系进行分解,首先分享价值高、可迁移的工程标准V 1 . 0 。后面陆续会向大家汇报我们
5、在A I 赋能软件开发、A I 开发软件工程等方面的进展。更期待您的反馈和交流。 李涛 百度工程效率总监 百度平台化委员会秘书长2 0 1 8 年1 0 月1 0 日 百度工程能力白皮书I编委会成员百度工程能力白皮书I I目录百度工程能力白皮书I I I1111122223456677891 01 21 21 21 31 31 31 41 41 51 61 7 百度是一个技术公司,研发工程能力的高低直接影响公司的持久创新力和公司在市场上的作为。只有不懈追求卓越的工程能力,才能够带来长期的核心竞争力,才能为每个用户、每个企业客户以及整个社会创造价值。长期以来,百度在大量的软件开发经验中总结了许多
6、优秀的工程实践,这些实践来自于公司工程标准和开发工具链的结合。经过长期团队观察和大量研发数据分析,我们证明这些实践可以有效帮助提高软件开发效率和产品质量。 百度软件工程标准制定的目标是帮助研发团队持续提升工程能力。工程标准可以快速指导团队采用优秀的软件工程实践和研发工具,使其在研发效率或产品质量上获得提升。同时有了标准和规范,也能够更有效地衡量团队工程能力的水平,让各个团队能够更好地了解自身的工程能力现状,进而设定工程能力提升目标,不懈追求工程卓越。 本白皮书希望分享百度在软件工程标准、实践、度量和改进方面的经验,呼吁业界共同加强工程能力建设、研发工具投入、工程标准更新与工程素养提升,共同推进