彭珍连,曹步清,刘建勋
(湖南科技大学 计算机科学与工程学院,湖南 湘潭 411201)
2017 年 2 月 18 日,教育部高等教育司张大良司长在综合性高校工程教育发展战略研讨会上强调:当前新经济快速发展迫切需要新型工科人才支撑。随后,教育部于同年6月9日在北京召开新工科研究与实践专家组成立暨第一次工作会议,审议通过了《新工科研究与实践项目指南》[1]。根据指南要求,新工科应该服务于新经济、新产业。从普通高校层面来说,一方面要开设和发展新兴工科专业,另一方面要推动现有工科专业的改革创新,主动布局面向未来技术和产业的人才培养。为加快实现我国工程教育强国的梦想,普通高校应该构建新工科与传统工科相结合的学科专业新结构,探索新工科背景下课程教学新模式,提高普通高校教育质量和人才培养质量[2]。
需求工程自20世纪90年代以来,逐渐成为独立于软件工程的一个研究领域,越来越受到国内软件开发者和实践者的重视。近年来,随着知识工程研究的不断成熟,需求获取、分析与演化(管理)等领域也越来越成为国内外许多学者研究的热点,为需求工程课程教学提供了新的研究理论和研究方法。
需求工程课程作为软件工程方向的专业课之一,得到了全国各个开设了软件工程专业的高校的广泛关注。它具有理论性强、专业性强、领域性突出的特点[3]。在理论方面,该课程要求学生能够熟悉需求工程各个阶段的知识,有扎实的编程基础;还能够掌握和运用其他非专业能力知识,例如认知心理学、社会学、语言学、哲学等知识,去交流、提问、倾听,能有效团队协作等。在实验环节,该课程要求学生能够采用相关的工具、技术和方法,对现实世界进行观察,发现问题,获取需求,分析与建模,并按照规范编写软件需求规格说明文档,验证文档正确性、统一性等特点。因此,该课程的教学能够提高软件工程专业大学生的整合能力、抽象能力、系统化思想的分析技能;培养他们表达与沟通能力、语言驾驭能力;培养他们观察与建模技能;培养他们文档组织能力;培养他们发现用户自己都很难意识到的潜在需求的能力[4]。
需求工程教学模式研究目的是以当前市场需求为导向,建立合理的需求工程课程体系,将需求工程新的技术和方法传授给学生,并加强需求开发过程和需求管理过程的能力培养,使他们能真正掌握基本的需求分析原理和方法。为了让软件工程专业的大学生能够积极主动地参与需求工程课堂学习,激发他们的学习兴趣,提高软件工程专业课堂教学效果,提高学生的实践能力,以培养适应当前新工科建设形势下软件工程方向的高素质专业人才,也是需求工程课程教学模式改革的核心内容。
经过多年从事实际的需求工程课程教学,笔者发现该课程的理论教学和实验教学开展难度都比较大,具体体现为以下几个方面的问题。
(1)由于湖南科技大学软件工程本科专业新建于2015年,时间相对较短,在专业培养方案初期,需求工程课程的培养目标和内容不是特别清楚。例如,将课程命名为需求工程与UML,从而使大学生普遍认为需求工程与UML是并列或平行的关系,而不能认识到UML只是需求工程中需求分析的一个建模工具。
(2)需求工程这一研究领域正在发展中,目前仍缺乏国际公认的知识体系[4-5]。在理论上,本课程的教材比较少,而且这些为数不多的教材内容区别比较大,侧重点不同,譬如有的教材偏重需求工程过程,而有的教材偏重需求的形式化表示方法。实践应用中,需求工程的新技术和方法不断涌现,实践内容很难做到统一规范。因此,市场上几乎找不到需求工程课程的配套实验教材,导致实践课的内容选择相当困难。
(3)教学内容比较抽象。需求工程课程内容主要包括需求工程的概念、过程,需求获取技术和方法,需求分析技术和方法,需求管理技术和工具等,这些知识除了涉及软件开发和管理知识领域,也涉及心理学、社会学、语言学等领域。这些内容都很抽象,对大二学生来说,会感到课程内容枯燥,逐渐失去该课程的学习兴趣。
(4)教学模式比较单一。需求工程课程目前的教学方法仍然采取传统的教学模式,即以教师课堂授课为主,教学中侧重基础理论和方法,兼以少量的案例演示。而在相关抽象概念、技术、建模方法等实践环节方面做得不够到位,学生很难深入掌握和理解该课程的理论知识。另外,与其他高校一样,该课程的课时一般较少,限制了学生实践能力的发展[6]。
(5)考核方法不够全面。湖南科技大学需求工程课程的考核方式基本采用传统的考核方式,例如以闭卷形式为主(占70%),以平时成绩为辅(占30%),其中平时成绩包括点到、课堂表现、平时作业或实验报告等。大量实践证明,这种传统考核方式不够全面,太偏重于期末考试成绩,即太注重需求工程基本理论知识的测试,而忽略了需求工程课程中综合应用知识的整体考查。
好的教学模式离不开清晰的课程培养方式。需求工程课程是湖南科技大学软件工程专业大学生的学位必修课之一,最初确定课程的培养方式为理论课,课程名为需求工程与UML,共56课时。如前所述,这样的课程培养方式存在一定的问题。因此,2017级软件工程专业课程培养方案调整时将该课程更名为软件需求工程,并调整为理论与实践相结合的方式,即32个理论课时和16个实践课时。通过这种方式,软件工程专业大学生很容易明白软件需求工程是一个独立的课程,UML只是软件需求工程中面向对象需求分析方法中的一种工具。另外,这种方式既兼顾了大学生能够学习需求工程课程的理论基础知识,又能保证大学生在具体的实践过程中加深对需求工程理论基础知识、技术、方法与工具的理解。
选择和编写合适的教材是提高教学效果的基础。现有的需求工程课程教材比较少,而且它们之间的侧重点有所不同。经过多次比较和选择,理论课教材选定了由南京大学骆斌教授主编、高等教育出版社出版的《需求工程——软件建模与分析》[7]。对于需求工程初学者,该教材的内容比较丰富,能够深入浅出地解释需求工程的基本理论知识。对于实践教材,目前几乎没有找到相应的配套教材,笔者根据理论知识对应的案例进行编写,具体实践内容包括需求获取技术与方法、结构化需求分析方法、面向对象需求分析方法以及需求规格说明文档编写等。其中,需求获取包括用例场景、面谈、调查问卷与原型等案例内容;结构化需求分析包括数据流图与数据字典等案例内容;面向对象分析包括用例图、类图、活动图、状态图、顺序图、协作图等案例内容。
优化课程内容是不断适应新工科要求的必然选择。随着软件需求工程技术和方法的不断涌现,需求工程课程内容非常丰富,概念性和抽象性强。经过多年教学经验,选择需求开发过程和需求管理过程为课程的教学内容。其中,需求开发过程为重点教学内容,而需求管理过程为可选教学内容,见图1。
图1 需求工程教学内容分配
需求开发过程和需求管理过程统称为需求工程过程。其中,需求开发过程包括需求获取、需求分析、需求规格说明与需求验证,需求管理过程包括需求变更与需求跟踪。需求获取的重点教学内容包括涉众分析、硬数据采样、基于用例场景模型、面谈、原型、观察和文档审查。需求分析的重点教学内容包括结构化需求分析方法和面向对象需求分析方法。结构化需求分析方法以数据流图、状态转换图为重点授课内容;面向对象需求分析方法以用例图、类图、活动图、状态图、顺序图、协作图、组件图与部署图模型为主。需求规格说明以需求规格说明书的国际或国家撰写标准为主,需求验证主要讲解需求评审方法。
行之有效的教学方法是教学模式发挥作用的有力保证。需求工程课程包含的内容非常多,这些内容之间的差异性非常大,在教学过程中采用同一种教学方法势必影响教学效果。因此,实际课堂采用内容差异化教学方法,即根据不同的内容使用不同的教学方法。
对于需求工程过程涉及的众多概念性内容,譬如软件需求定义、需求工程等理论知识,迭代反馈式教学方式[8]可以发挥有效作用。迭代反馈式教学方式通过典型案例介绍需求工程研究的最新概念、经典技术与方法及未来发展方向,扩大学生的知识视野;学生通过这些案例分析,采取分组讨论的方式进行实践,并将实践中遇到的问题反馈给任课教师;任课教师将反馈的问题进行解释和阐述;如此反复,直到学生理解清楚这些抽象概念为止。例如,讲解需求、问题、问题域和解系统的时候,以连锁超市管理系统作为案例,可以将用户对现有超市管理中的期望看作需求,期望与现实中的差距看作问题,现实中的超市管理相关业务知识看作问题域,而将解决问题的软件系统解决方案看作解系统,让学生分组讨论,讨论结果与问题反馈给任课教师,由教师负责解释和说明。实践和调查结果显示,这种方式提高了学生对需求工程中抽象概念的理解和掌握。
对于需求工程过程中的技术、方法或者工具等知识点,项目与案例驱动方法[9]可以收到较好的教学效果。例如,讲解面谈、原型等需求获取技术与方法、Rational Rose等UML建模工具内容时,由教师指导,将图书管理系统、教务管理系统、高校二手交易系统、在线教学系统等独立项目交给学生处理;学生仍然采取分组方式,每组3~5人,自行选择感兴趣的项目;要求学生完成需求信息收集、需求建模分析、需求文档编写及需求评审等工作。学生通过这些项目实践,了解并掌握整个过程和每个阶段的基本要求。项目与案例驱动教学法倡导以学生自主学习为中心,教师在教学过程中起指导、组织和帮助作用。通过这种教学方法的实施,学生的知识串联能力、交流沟通能力、团队协作能力以及文档撰写能力都得到了明显的进步。
在实践课程过程中,成果导向教育(Outcomes-based Education,OBE)理念[10]可以贯穿该实践课程教学过程。具体来讲,可以采用学生分组完成一个项目成果,每组学生不能超过3人,项目成果包括需求获取结果文档,数据流图、数据字典等结构化需求分析文档,各种图模型的面向对象分析需求分析文档,软件需求规格说明书编写与评审文档等。通过这种成果导向教育方式,软件工程专业大学生的建模能力和文档撰写能力明显提升。
改革教学考核方式是检验教学效果的有效手段。湖南科技大学需求工程课程目前采用传统的考核方式,即平时考核和期末考核两部分。平时考核占总成绩的30%,期末考试占总成绩的70%。今后的教学将逐步增加平时考核成绩的比重,如平时考核成绩提高为40%,并采取多次考核的方式,形式可以为实验报告、分析模型或者可运行原型等;期末考核逐步采用开卷方式,对现实案例分析进行考核,重点考核大学生对现实项目的综合运用能力和实践能力。这些现实案例按一定比例(如50%)来源于平时的实验项目,激励学生重视平时实验,防止部分学生在分组实验过程中“打酱油”,督促他们积极主动,不能偷懒。
新工科背景下,在软件工程专业的课程开展问题的教学模式的尝试,取得了初步的效果,一定程度上促进了软件工程专业大学生需求获取、需求分析方面能力的提高。但是需求工程课程的教学模式改革是个系统工程,本文讨论的教学模式只是一些浅层模式的尝试,许多新的课程教学方法值得进一步完善和改进,使这些方法也能在软件工程其他专业课程的教学实践中加以推广和应用。