动机
我们正在进入智能化时代,软件正在定义和实现世界,软件本身的智能化以及软件开发和质量保证技术的智能化刻不容缓。自2015年开始,我在南京大学计算机科学与技术系开设了软件质量保证本科生课程。当时我也在为学生讲授软件测试课程,并已经持续了5年。2013年,我在参考市场上已有的近百本教材的基础上自己编写了《软件测试的概念与方法》,其中的内容更新程度超过50%。但当我开始着手准备软件质量保证课程的教材时,在对国内外课程内容的调研中发现了以下几个特点:
国外教材多数从一般的质量管理出发,过渡到软件质量管理和保证的理论及方法,对软件新技术涉及较少。
国内教材多数把软件测试和软件质量保证的理论和方法放在一起,有很多教材几乎各占一半。
几乎所有的教材都是按照软件工程的过程来组织的,即分别介绍需求分析、设计、编码、测试和维护等阶段的质量保证措施和方法,而且这部分内容约占一半以上。
因此,我在选择教材的时候就面临这样一些问题:
现有教材的内容与软件工程课程的教学内容重合度高,而我们的学生已经学过软件工程课程。
很多教材的内容与我正在主讲的软件测试课程重合度高。
现有传统教材的内容更新速度普遍比较慢,很多新知识还没有包括进去。
基于以上考虑,我们在教学实践中进行了一些尝试和探索,拟取长补短,编写一本能够反映技术进步、与时俱进的新教材。2019年暑假,在4年多教学实践的基础上,我编写了“智能化软件质量保证概念与方法讲义”作为临时教材,经过秋季学期的使用,又发现了讲义中一些新的问题。2020年春节期间,正值新型冠状病毒肆虐,在居家抗疫的非常时期,我安下心来系统地对讲义内容又进行了一轮修改,希望这本教材正式出版后能为正在迅速发展的软件领域抛砖引玉,做出一点贡献。
编写这本教材的一个初衷就是“把散落在茫茫书海和论文中的米粒捡起来,攒成米团献给大家”,或者“把珍珠收集起来,串成项链送给大家”。所以,这本教材也是我在多年教学和科研基础上的认识和总结。
编写框架
本书系统介绍智能化软件质量保证的概念、理论和方法,从中提炼出100个左右的知识点,讲解这些知识点的定义、目标、方法、原理、实例、优缺点、研究现状等。个别概念与方法因具体情况而有所剪裁,特别是有些还不是很成熟的方向,只能做粗略的介绍。
针对每一个知识点,首先介绍它的目的,即可用来做什么;接着具体介绍这个知识点的概念,即是什么;然后介绍其原理和理论基础等,即为什么;之后尽可能通过例子将该知识点描述得更清楚,并评论其长处和不足;最后介绍研究现状,为学者和研究人员提供知识来源。另外,作为教材,我们还需要检验和巩固学习效果,因此各节末尾还设计了思考题。
内容组织
经过5年的探索和积累,在充分继承已有教材优点的基础上,本教材充分收集和整理了智能化软件质量保证相关的新技术、新方法和新理论。全书共10章。其中,第1章作为概论,从软件与智能化软件、质量与质量观两条线出发,讨论软件质量及软件度量。特别重要的是,我把国务院2010年出台的《质量发展纲要(2011—2020年)》放进来,这是国家层面对各行各业质量工作的顶层设计、规划和工作安排,对于提高读者的质量认识水平和指导我们做好软件质量保证工作具有重要意义。
传统部分的内容包括:软件质量保证的重要过程和管理(第2章)、软件生命周期中的质量保证(第3章)和软件质量保证体系(第4章)。在传统质量保证的基础上,后续内容侧重于软件质量保证的自动化方法(第5章)、软件服务新环境(第6章)、软件新形式(第7章)、群智化与敏捷化开发(第8章)、软件智能化技术(第9章)和软件智能化开发支撑技术(第10章)。后面6章的内容是本教材的特色,基本上覆盖了智能化软件开发和质量保证的方方面面,而这部分内容是以前的教材几乎没有涉及的。
在本教材中我们整理了关于软件质量保证的100个左右的知识点(具体见第1章),其中绝大部分知识点都有专门的著作或教材加以讲解。例如,软件测试只是其中一个知识点,即1%的内容,但在高校中软件测试就是单独的一门课程,市场上有上百种软件测试教材和著作。在本教材共10章的内容中,只有第2、3、4章是对传统质量保证教材内容的重新组织,其他章节的内容基本上都是新增的知识点。
致谢
在教材编写的过程中,得到了南京大学计算机系各位老师的帮助。这里特别感谢计算机系主任及人工智能学院院长周志华教授对“学件”一节内容提供的支持和帮助。还要感谢周毓明教授在“软件度量”方面,许蕾副教授在“软件分析”方面,陈林副教授在“软件重构”方面,以及我系青年教师吴化尧博士和钮鑫涛博士在很多方面提供的帮助。
感谢北京航空航天大学蔡开元教授在“软件控制论”方面,北京科技大学孙昌爱教授在“智能化软件”方面,哈尔滨工业大学苏小红教授在“软件安全”方面,东南大学李必信教授在“软件体系结构”方面,西北工业大学董云卫教授在“信息物理系统”方面,南京邮电大学张迎周教授在“程序分析”方面,中国电信研究院移动通信研究所张志荣高级工程师在“5G”方面,美国甲骨文公司首席软件工程师高维忠在“区块链技术”方面提供的很多支持和帮助。感谢南京晓庄学院徐家喜老师和王燕老师、中国电信江苏省公司李忠超高级工程师等帮助收集和整理教学资料。
感谢我的博士生陆超逸、张文茜协助收集和整理资料。感谢2015至2019年这5年来选修我的“软件质量保证”课程的同学,与他们进行的教学研讨,以及他们每个人在学期结束时提交的调查报告,给我提供了开阔的思路和丰富的材料,这些对形成本教材的内容也起到了非常重要的作用。
本书在编写过程中得到了科技部重点研发计划项目“面向服务的群智化生态化软件开发方法与环境”(No.2018YFB1003800)、南京大学软件新技术国家重点实验室、南京大学计算机科学与技术系、华为科技有限公司等项目和单位的支持。
聂长海
2020年2月14日
于南大和园