以能力培养为导向的《软件工程》课程实践教学研究
2017-07-12郭咏梅张剑妹韩冰
郭咏梅+张剑妹+韩冰
摘要:针对学生在软件开发过程中操作不规范、实践动手能力弱的问题,对《软件工程》课程的实践教学内容、方法、实施过程和考核方法进行改革。阐述了分层递进的实践教学过程、案例驱动的教学方法和重视实践能力的考核方法,使学生在实际项目开发过程中不断提高基本工程能力和创新能力。
关键词:软件工程;创新能力;实践教学
DOIDOI:10.11907/rjdk.171690
中图分类号:G434
文献标识码:A 文章编号:1672-7800(2017)006-0212-02
0 引言
《软件工程》课程是计算机科学与技术专业的一门专业基础核心课程,重点讲授软件工程的基本概念、原理和方法,使学生不仅认识和理解开发大型软件的基本方法和过程,而且学以致用,将理论知识运用到软件开发的分析、设计、编码和测试等活动中,基本具备解决实际问题的软件工程能力[1]。但在实际教学过程中,普遍存在着一些问题:教学活动重理论轻实践,重知识传授轻实践能力培养;实践教学缺少对学生工程能力和工程素养的训练,学生实际动手能力不足;学生分析建模、设计算法和编码测试不规范,其专业能力与软件产业界的需求往往存在较大的脱节,难以满足社会和企业用人需求。为此,应用型高校《软件工程》课程教学必须区别于科学型和工程型学校,要以培养软件应用型人才为目标,以培养学生工程基本能力为导向,针对教学中存在的问题,对《软件工程》课程的实践环节进行改革,探索行之有效的教学方法和教学手段,改革实践教学的实施过程,提高学生应用所学知识解决真实问题的工程能力和职业素养,适应经济社会发展对应用型人才的需求。
1 软件工程基本能力分析
对于应用型软件人才,其主要任务是将成熟的技术和理论应用到实际的生产和生活中,其培养的关键是强调对学生工程能力的培养[2]。在学生掌握《软件工程》课程基础理论知识的同时,重点培养以下基本能力:
(1)需求分析与系统设计能力。掌握软件工程结构化和面向对象分析、设计方法,能够用规范的方法获取用户需求,并进行需求分析、概要设计和详细设计;熟悉常用的软件分析与设计工具,能够描述系统的功能模型、数据模型和动态模型,设计系统结构、模块实现算法和用户界面等;能夠阅读理解和撰写系统需求规格说明书、概要设计和详细设计说明书等软件开发文档。
(2)编程能力和测试程序能力。根据设计阶段的设计方案,在某一特定的开发平台上,应用软件工程的技术和工具,编写程序实现软件系统的功能并进行测试。要求学生熟悉一门高级语言编程语言,如Java、C++等,掌握软件的编辑、编译、运行和调试技术;遵循软件工程要求的编程规范,养成良好的编程风格;掌握基本的软件测试步骤、测试方法和常用的测试工具,能应用白盒测试和黑盒测试技术设计简单的测试用例;能够阅读理解和撰写软件测试计划、软件测试报告等测试文档。
(3)团队协作能力和沟通能力。每个成员都要充分理解团队合作的重要性,在具备个人工作能力和表达沟通能力的基础上,能够与小组成员分工合作,遇到问题能够与成员讨论协商,共同完成软件项目开发。
2 软件工程基本能力培养途径
基本能力的培养要以课程知识为载体,通过一系列的教学活动来完成[3]。在教学过程中,以案例教学取代传统的理论教学,强化实践为主取代讲授为主,精选实验内容、改进教学方法和考核方法,多方面密切配合,有效培养学生的软件工程基本能力。
2.1 构建分层递进的实践教学环节
《软件工程》课程的实践环节分为3个层次:案例解剖、课程实验、课程设计。在整个教学过程中,由教师引导,从案例解剖入手,到分模块的课程实验,再到整体的课程设计,遵循学生的认知过程,让学生由简单到复杂,由模仿设计到创新设计,不断提高学生的实际动手能力。
(1)案例解剖。在课堂教学过程中,教师紧紧围绕一个典型的案例开展教学,将课程知识点与案例紧密结合,引导学生按照软件开发的基本过程解剖案例,让学生动手体验案例开发各阶段的主要活动。首先让学生以用户的身份实际操作应用案例,明确案例系统能够完成的功能和具备的性能,然后教师引导学生以开发者的身份将系统的开发分为分析、设计、编码测试3个主要阶段,教师紧紧围绕案例讲解用户需求获取方法、需求建模方法和工具、系统设计方法、编码规范、测试方法以及常用工具的使用,并让学生动手模仿和验证各阶段的实际操作,让学生真正看到一个应用系统是如何开发的,初步认识一个软件项目的开发方法和过程,了解软件项目开发流程和规范,养成良好的软件开发习惯,加深理解软件工程的基本概念、原理和方法在实际项目中的应用,建立初步的工程意识。
(2)课程实验。根据课程的知识单元设计分模块的实验项目,主要类型包括设计性实验和综合性实验,学生模仿案例的开发过程,举一反三,以小组形式完成分模块的课程实验。例如面向对象开发方法实验分为需求分析、设计和编码测试3个主要模块,学生以小组形式完成实验内容,小组成员分工合作,用面向对象的分析方法和步骤需求分析,建立系统的对象模型、功能模型和动态模型;然后通过迭代完成面向对象的设计,最后编码实现系统的主要功能,设计简单测试用例进行类测试和系统测试,撰写需求规格说明书、系统设计说明书和系统测试报告。在实验过程中,一方面综合应用Java语言程序设计、数据结构、数据库原理等前修课程的知识,将理论知识与实际应用相结合,培养学生的独立思维能力和应用知识解决实际问题的能力;另一方面使用分析、设计和测试的常用方法和工具,进一步训练学生分析设计能力、编码测试能力和分工合作能力,培养学生的工程素养,促进工程能力的提升。
(3)课程设计。课程设计是在整个课程结束后开设的综合性实践项目,时间1周,采用分组形式,每组3~4人,完成一个比较完整的软件项目开发。该阶段聘请企业有开发经验的教师一起设计课程题目和内容,讲解企业开发环境、基本开发过程和管理活动,使学生在模拟的企业环境中,进行角色体验,在企业教师和学校教师的共同指导下完成软件项目开发。课程设计过程可进一步促进学生开发项目的规范性,提高其软件工程应用能力、软件项目开发与测试能力,训练学生团队合作精神,提高其工程职业素质,为将来进入企业实训打下良好基础。
2.2 精选实践内容、强化实施过程
(1)实践内容选择。案例、实验和课程设计内容要精心设计和准备,主要考虑3个方面: 一是实践内容要具有实际意义,与日常生活的应用紧密联系,这样能够调动学生学习的积极性,让学生在完成实践的过程中体会到软件工程知识在真实环境下的应用;二是要能够综合应用前修课程的知识,领会C语言程序设计、Java程序设计、数据结构、数据库原理、算法分析与设计等在软件开发过程中的应用;三是要考虑学生的接受能力,设计从简单到复杂、从单项到综合的实践模块,让不同层次的学生都能完成一定的实践内容,让基础比较差的学生能够完成简单的实践内容,获得成就感,让学有余力的学生能发挥潜能,完成较为复杂的实践内容。
(2)实践过程實施。案例的讲解过程主要是在教师的引导下,对案例分解、讲解,让学生动手验证需求建模、设计算法、编码测试的过程,体验软件的开发方法和步骤。课程实验以学生为主、教师为辅,充分调动学生的积极性,要求学生模仿案例,通过小组讨论,设计完成实验的各个模块。课程设计在企业教师和学校教师共同指导下,模拟企业环境进行项目开发活动,以开发团队的形式开发一个具有一定规模的实际项目,重点训练学生独立思维能力,提高学生的基本工程能力和工程素养。
2.3 注重规范训练和工具使用
在软件开发过程中,注重软件工程标准与软件工程工具的使用,重点培养学生的工程意识和规范行为。以基于UML的面向对象为主,训练学生学会使用Visio 2010或者starUML等工具建立需求模型,画出用例图、类图、时序图等,熟悉常用的软件体系结构和设计原则,用流程图描述功能模块的算法。在程序代码编写过程中,统一标识符的命名规则,避免随意命名的不良习惯,注重培养学生良好的编程规范。掌握基本的测试方法和测试步骤,学会运用常用测试工具完成简单的测试要求,保证学生用规范方法和工具完成实践的各个环节。
2.4 改进实践环节考核方法
课程实验和课程设计的过程都要注重小组成员的分工和小组协作,既要考核小组整个成果,也要考核小组成员的个人贡献。课程实验按教学内容分为结构化和面向对象两个实验内容,每个实验分为需求分析、系统设计、编码测试3个主要模块,每个实验具体评价内容与比例为:软件需求规格说明 30%,软件设计文档30%,模块代码和软件测试40%。
课程设计环节的考核与《软件工程》课程考核分开进行,有独立的学分和成绩,需求分析占20%,系统设计占20%,模块编码和测试方法占40%,课程设计报告格式和图表规范占20%。
注重实践环节的考核和管理,分阶段进行评审,督促学生严格遵守开发计划、需求规格要求和操作规范,是保证软件高质量的重要措施。
3 结语
作为计算机专业的核心基础课程,《软件工程》课程实践环节对软件应用型人才的基本工程能力培养起着重要作用。通过分层递进的实践教学环节,让学生在学中做、做中学,理论和实践紧密结合,真正领悟软件工程抽象的理论方法在现实生活中的具体应用,从案例体验到模仿设计,再到独立设计和创新设计,从分模块的实验到简单项目的完整开发,循序渐进地提高了学生分析和解决实际问题的能力,以及工程能力、团队合作能力,使学生建立了规范开发软件的工程意识。
参考文献:
[1]刘强,陈越,骆斌,等.“软件工程”课程教学实施方案教育[J].中国大学教学,2011(2):41-44.
[2]檀明,张向东,许强,等.以能力为导向的软件工程专业应用型人才培养[J].计算机教育,2010(21):88-92.
[3]蒋宗礼.以能力培养为导向提高计算学科教育教学水平[J].中国大学教学,2008(8):35-37.
(责任编辑:孙 娟)