贲可荣 何智勇
摘要:“软件工程”是计算机科学与技术专业本科必修课程,对培养军队信息化建设的人才有重要作用。本文介绍我们在“软件工程”课程教学中的做法及体会,包括采用英文原版教材、实行双语教学、通过课程大作业对所学理论和技术进行综合实践、贯穿课程的案例教学等方面。通过这些方法,强化了学生的实践应用能力,提高了软件工程师的综合素质。
关键词:软件工程;双语教学;案例教学
中图分类号:G642文献标识码:A
1概述
软件是高新武器装备的灵魂,软件是构筑信息化装备体系的关键,软件可有效提升武器装备的整体作战效能,软件是信息战中攻防对抗装备发展的焦点。软件在军队信息化建设中起着十分重要的作用,军队信息化建设对软件质量提出了更高的要求。软件工程方法、技术、工具为软件开发提供了工程指南。计算机专业的本科生将有机会参与各类军用软件系统的设计、开发、测试,甚至过程管理工作,学习“软件工程”课程可以培养他们的能力和素质。
“软件工程”是计算机科学与技术专业本科学员的专业必修课,是实践性很强的综合性课程。本课程的任务是系统地介绍软件工程的过程、方法和工具,并且通过较大规模的实习使学员初步掌握软件计划、开发、测试和维护的工程化方法,为学员将来从事应用软件的开发打下基础。
通过本课程的学习,对软件产品和软件过程有全面的理解和认识,掌握软件质量保证技术的基本理论、基本方法,掌握软件生命周期各阶段技术特征,了解计算机辅助软件工程工具,了解软件可靠性概念,掌握测试和维护的基本方法。在保证教学效果的前提下,开展双语教学,以提高学员查阅外文资料和科技外语交流的能力。
2双语教学
随着英语水平的普遍提高和英语的需求增加,在教学主管部门的鼓励下,我们于2002年起在“软件工程”教学中引入了双语教学模式。
“双语教学”可采取如下形式:浸入型双语教学、保持型双语教学和过渡型双语教学。限于语言环境并不是中英并重的,所以我们采用保持型双语教学,即学员刚进入学校时使用汉语,然后逐渐地使用英语进行部分学科的教学,其他学科仍使用汉语教学。我们采用英文原版教材,以讲授专业知识为目标,采用双语为手段,其特点是专业知识与英语训练并重。
因为Pressman的原版教材在国内有影印版,同时该书是国际上有影响的教材,因此,我们采用Pressman的《Software Engineering——A Practitioner's Approach》(第4版和第6版)。同时,该书新版及时反映了软件工程的技术进步。我们系软件工程为40学时(一学期完成),教学形式包括:讲授+讨论+作业+课程大作业+考试。
对教师的双语要求:对内容非常熟悉;预告内容;教材和多媒体课件用英语,讲课中英文并重,要求用正确流利的英语进行知识的讲解,但不排除汉语,避免由于语言滞后造成学员的思维障碍;考试出题用英语。
对学员的双语要求:预习;课上发言:英语+适当的中文解释;作业:鼓励用英语;考试:开卷,允许带字典和教材。
几年的实践,双语教学对学员的学习起到了如下促进作用。
(1) 加强了外语语言能力的发展
用专业教学语言来促使外语语言能力发展,避免外语教学与专业教学脱节。由于学习的需要,学员自然会产生努力学习外语的动机和兴趣,这种动机和兴趣比在单纯的语言课程上容易产生并更加持久。双语教学使学员通过对教学语言的感受来达到提高外语水平的目标,学员在努力弄清教师在课堂上讲授的意思的同时,外语听力和外文知识将在有意与无意之中得到强化。
(2) 有效解决长期存在的学与用脱节的问题
在双语教学中采用国外原版教材其突出的特点是实用性强,而这一特点恰恰是多年来中国软件工程教材中的薄弱环节。国外教材中还大量配以各种案例,通过对案例的分析,能提高学员分析问题、解决问题的能力,使学员能把学到的东西应用到实际工作中去,并且推动了基于案例教学和课程大作业的开展。
(3)“原汁原味”,促进教学的规范化和国际化
我们的军事人才培养是在国际化的大背景下进行的。双语教学使软件工程课程与国际接轨,能够反映最先进的软件工程方法、技术和工具,随着进一步规范化,相应的软件课程体系和配套教学资料将与国内外比较知名的学校基本一致。而软件工程课程教学的规范化,对于计算机专业其他课程的教学将起十分重要的示范、带动作用。
3案例教学
软件教学的实践表明,如果没有亲身体验,学员很难相信软件工程技术的好处。让学员理解和掌握软件工程的最有效的方法是让他们完成为时一学期的软件项目的开发。我们开设的软件工程课程是一门以面向对象的软件开发为重点、集实用性与即用性于一体的课程。
我们强调“实践”。一般来讲,实践就是软件工程师日常使用概念、原则、方法和开发工具的集合,实践使得项目经理可以管理软件项目,保证软件工程师开发计算机程序,实践利用由必要技术和管理组成的软件过程模型,保证开发工作顺利开展,实践将使一些杂乱的容易被忽视的方法转化为更具组织性、更高效并且更容易获得项目成功的重要东西。
教授一门基于项目的软件工程课程最重要、也最困难的是如何选择合适的项目。因为所选项目必须足够复杂,以便让学员以3~5人为单位组成一个开发小组,同时又必须能在15周内完成。比达到目标更具挑战性的是所选的项目必须引起学员的兴趣,让其有内在的动力。我们提供一种可以在15周学习时间内完成一个大软件项目的专门开发方法。我们还提供了两个连续的案例分析,用作为时一学期的项目开发的样板。案例分析中内含有制品的样本,举例说明了学员在其项目的生命周期中所要交付的资料的类型。
课程案例包括以下内容。
(1) 工资支付系统:管理不同种类的员工,如小时工、月薪员工等,处理不同的工资计算方法,如按工作时间、按销售订单提成等,员工可以提交时间卡、销售订单等工作记录,系统需要根据工作记录和员工类别,按照工资支付周期,以合适的形式(转账、支票)正确发放工资。
(2) 鼠标点击游戏:锻炼用户对鼠标的使用,支持双人对战和人机对战,双方各分配一种颜色(红或蓝),红蓝小球不断出现在二维方格中,用户可以通过点击鼠标,尽量消去己方的小球,如果出现同颜色的相邻的小球,则该用户失败,并给出双方的分数。
课程大作业是对所学理论和技术的综合实践,是提高实践能力和积累工程经验所必须具备的重要教学实践环节。在我们教学中,推荐如下课程大作业选题:网络环境下图书馆管理系统,模拟计算器,俄罗斯方块游戏,酒店管理系统,高校医院管理信息系统。有兴趣的同学可以自由选题,必须经老师认可。
课程大作业的目标是使用整个教育计划中获得的知识,包括需求、设计、实现和质量保证等,进行典型软件系统的开发。学员可以采用任何合适的过程模型,注意质量问题,并自己管理项目。
学员应在开发一个软件系统中实施一次或多次迭代,并生成过程模型要求的各种制品。这些制品包括项目计划(可能被定期更新,并包含成本预算、风险分析、工作到任务的划分等)、需求(包括用例)、体系结构和设计文档、测试计划、源代码和可安装的系统。
学员在大作业中分组工作,每组成员至少2人,最好是3~4人;小组成员的选择考虑到理论能力和实践能力的平衡。在大作业实施过程中,定期报告各小组的进展。每个小组虚拟一个“客户”,项目的目的是解决客户的问题,因此客户应帮助教师来评价最终工作。
通过课程大作业,使软件工程教学达到理论与实践相结合、知识与能力相结合,既培养个体的程序设计与实现能力,又强化了学员对团队协作的工程规范和专业知识的综合运用。
我们认为,学员应该在一个或多个领域拥有专长。对于每一个应用领域,应该在深入学习特定系统设计的同时,广泛涉猎有关的领域知识,并且学习这些领域中典型产品的特性及其对系统设计与开发的影响。我们推荐如下应用领域:以网络为中心的系统;信息系统与数据处理;容错与可存活系统;高安全性系统;安全攸关系统;嵌入式与实时系统;舰载指控系统;多媒体和仿真系统;小型移动平台系统。
市面上软件工程方面的教材大多重理论轻实践,那些基于项目的教材并没有把重点放在面向对象的范型中来。我们在这方面做了些尝试,并按该思路撰写了一本《软件工程——基于项目的面向对象研究方法》。
4综合素质培养
软件工程是一门交叉性的工程学科,它建立在计算机科学和数学的基础之上,但已经超出了以这些技术为基础的学科范畴,它将计算机科学、数学、工程学和管理学等基本原理应用于软件的开发与维护中。软件工程的目的是以系统的、可控的、有效的方式创建高质量软件。软件工程教育兼属科学教育与工程教育范畴,交叉应用性和工程实践性是软件工程的学科特性,因此,其重点在于软件的分析与评价、规格说明、设计和演化,另外还涉及管理和质量、创新、标准、个人技能、团队协作和专业实践等。
毕业学员有机会参与各种信息系统(包括指挥、控制、通信、情报、侦察、导航、电子战等系统)的设计和开发,因此,我们注重学员如下软件工程素质的培养:基础知识和技能;团队工作的能力;分析与解决问题的能力;谈判与沟通的能力;适应发展的能力;认知能力和技能;实践能力和技能,包括判断能力、创新能力、沟通能力、团队协作、专业发展的其他技能。达到科学教育、工程教育与创新实践紧密结合,在夯实数理基础和工程科学的同时,加强工程教育,强化创新实践教学,培养综合能力。
不同的项目会锻炼知识体系中不同知识领域的技巧。这些知识单元包括:构造技术,团队动力/心理学,交流沟通技巧,专业技能,模型类型,需求获取,需求规范和文档,需求确认,软件设计策略,体系结构设计,人机界面设计,详细设计,设计符号和支持工具,设计评估,评审,测试,项目规划,项目人员和组织,软件配置管理。
我们的培养目标不仅是具有创新意识和创新能力的软件人才和软件工程师,还要通过课程培养学员遵守职业道德规范。
5小结
随着部队信息化建设的不断深化,在软件工程的学习上提出了更高的要求,只有具备了软件工程的基本知识,并且与具体的专业实践结合起来,才能使部队的信息化建设健康、平稳、有序和高效的发展,真正达到提高部队战斗力的目的。
通过在软件工程课程中采取双语教学、案例教学等手段,显著提高了计算机工程专业本科学员的综合素质,对软件工程技术和方法的实践能力得到了加强,促进了部队信息化建设的高质量发展。
参考文献:
[1] Roger S.Pressman. Software Engineering——A Practitioner's Approach(Sixth Edition)[J]. U.S. NJ: McGraw-Hill,2005.
[2] Evelyn Stiller,Cathie LeBlanc. 基于项目的软件工程——面向对象研究方法[M]. 贲可荣,张秀山,译. 北京:机械工业出版社,2002.
[3] Stacy J.Prowell,Carmen J.Trammell,Richard C.Linger,et al. 净室软件工程——技术与过程[M]. 贲可荣,张志祥,张秀山,译. 北京:电子工业出版社,2001.
[4] 贲可荣,何智勇. 软件工程——基于项目的面向对象研究方法[M]. 北京:机械工业出版社,2009.
[5] 杨芙清. 软件工程技术发展思索[J]. 软件学报,2005,16(1):1-7.
[6] Oscar Dieste,Natalia Juristo,Ana M Moreno. How higher-education systems influence software engineering degree programs[J]. IEEE Software, 2004,21(4):78-85.
[7] 晏立.从社会需求的角度探索软件工程教育[J]. 计算机教育,2008(22):141-142.
Bilingual and Case-Based Education in “Software Engineering”
BEN Ke-rong, HE Zhi-yong
(Naval University of Engineering Department of Computer Engineering, Wuhan 430033, China)
Abstract: “Software Engineering” is the Computer Science and Technology undergraduate curriculum, playing an important role in training persons for Information construction of military. Practice and understanding of teaching Software Engineering lessons are introduced in this paper, including Bilingual Education, End of Course Assignment, ability and quality training, and Case-Based Education. Through these methods, the ability of practice is strengthened, and the overall quality is improved as a software engineer.
Key words: software engineering; bilingual education; case-based education