论文部分内容阅读
[摘要]为适应社会对高素质软件人才的需求,文章分析了软件工程课程的特点、教学定位以及传统教学方法的不足,提出了基于项目驱动的复合型教学模式,将教学内容以组合式、模块化的方式融入教学案例项目中,展开以小组为单位的课外演练项目同步训练,并明确了相应的过程管理措施和评价办法。
[关键词]软件工程 项目驱动 教学改革
[作者简介]范会联(1971- ),男,重庆人,长江师范学院数学与计算机学院,副教授,硕士,主要从事软件工程、智能信息处理的教学与研究工作。(重庆 408100)仲元昌(1968- ),男,四川南充人,重庆大学通信工程学院,副教授,博士,研究生导师,主要从事通信与测控系统、无线传感器网络等领域的教学与研究工作。(重庆 400030)
[基金项目]本文系2011年重庆市教委研究项目“基于RFID的校园安全防范系统研究与设计”的研究成果。(项目编号:KJ111304)
[中图分类号]G642.3 [文献标识码]A [文章编号]1004-3985(2013)05-0147-02
软件产业是信息产业的核心、国民经济信息化的基础,已经渗透到各个领域。相关数据显示,我国软件开发行业人才需要量已经超过30 万人,并仍以每年20%的速度增加,其中初级软件开发工程师的需求量就高达20 万人,软件服务外包、3G 研发的人才缺口更大。但让人困惑的是,近年来失业率排在前10 位的专业中涉及计算机科学与技术。一方面每年相当一部分计算机专业毕业生就业困难,另一方面企业招聘不到对口的软件人才,这说明学校培养的软件人才与企业的实际需要存在较大差距。目前我国500 多所院校开设了计算机专业,培养方式各具特色,但培养适应企业需求的优秀软件开发人员,仍是教学实践中值得进一步研究和解决的问题。本文分析研究了软件工程课程的特点及传统教学实践中涉及的普遍问题,提出在软件工程课程的教学实践中引用基于项目驱动的复合教学式理念,并从教学定位、教学内容、教学方法、实践教学等方面进行了探索。
一、课程特点及教学定位
软件工程是一门理论与实践并重的课程,涉及内容广泛,从工程意义上讲,包括软件开发、维护和管理等活动的总体;从学科意义上讲,包括与软件开发相关的理论、原理、方法和技术。ACMCC2001 草案把软件工程学分为七大核心专题:软件过程和软件生命周期模型、需求分析、软件设计、测试和评估、软件进化、软件项目管理、软件工具和环境。为满足社会对不同层次计算机专业学生在软件工程方面知识和能力的要求,软件工程课程应设计成一个多层次的课程系列。针对计算机专业应用型本科学生,将教学定位在两个方面:一是从软件生命周期的角度,讲解软件工程的基本概念、基本原理和基本方法;二是从工程应用的角度,讲解系统性、规范化的通用开发技术。软件工程课程教学应既重视理论知识和分析问题与解决问题的方法,又重视软件工程实践。课程教学目标是使学生掌握需求分析、概要和详细设计及软件测试与维护等内容,用软件工程的原则、开发方法与技术实现中、小规模项目的开发与管理,使学生在基础知识与技能、团队协作能力、分析与解决问题、谈判与沟通能力、创新与发展能力等方面得到良好的训练,为将来从事大型软件系统的开发与维护打下扎实的基础。
二、传统教学方法存在的问题
1.教学内容枯燥、抽象、陈旧。目前的软件工程教材偏向纯理论介绍,主要讲解方法学,从结构化或面向对象的角度讲解软件开发过程的理论知识,缺少案例支撑。大部分学生对软件项目概念的理解是建立在其他课程设计的基础上,没有软件项目的经验,因而妨碍学生对软件工程中基本概念的理解,如可行性分析、需求分析、需求变更、过程管理、质量保障等,不明白为什么要做可行性分析、需求分析,以及需求变更的必然性及管理措施。随着软件系统向社会各方面的渗透以及软件系统的规模不断扩大,对软件系统的质量要求越来越高,这对软件工程课程的教学内容提出了新的要求。从内容上看,不仅要重视方法,还要重视开发工具与环境;不仅要重视开发过程,更要重视开发过程中的过程管理和质量保证措施,这些知识和技能,不能仅仅依靠书本和课堂教学来获得。
2.案例教学中采用的案例不当。软件工程的实践性很强,教学时一般采用案例教学法,方法的成效取决于选择的案例,案例如果选择不当,则教学效果肯定不好。很多教师在教学时,由于缺少实际软件项目的开发和管理经验,导致案例的选取要么不贴近学生实际,如机票预订、仓库管理项目,学生缺少实际接触经验,因而理解困难或不感兴趣;要么选择的案例规模较小,如简单的成绩管理系统,在学生的角度来看,可以直接进行设计和编码,不清楚为什么要进行可行性研究、需求分析;要么案例前后不连贯,如由于教师缺少实际项目开发经历,导致可行性分析的阶段选用机票预订,需求分析用仓库管理,而设计又选用人事管理等现象,导致学生对软件项目、软件工程没有建立完整的概念,缺乏对所学知识的整体认识。
3.重讲解、轻讨论,缺乏实战练习。软件工程课程的实践性要求很强,在传统软件工程教学过程中,教师一味讲解软件工程的基本原理、理论,或一味分析一些简单案例,忽视了学生主观能动性的发挥,没有让学生参与教材内容或案例的分析讨论。虽然有实验教学的要求,但一般只停留在组织学生编写软件项目设计文档的单一环节上,由于学生没有进行实际项目的演练,教学效果不理想。尽管这种以教师讲授为主的教学模式,在课堂教学中使用了一些情境教学,但仅仅遵循原有理论教学过程模式,并未按典型工作任务模式完成情境教学,培养出来的学生缺乏自主探索知识的能力和运用知识解决实际问题的能力。因此,切实加强软件工程教学的创新与改革至关重要。
三、项目驱动的复合教学模式
复合教学模式是以科学的教学理论为指导,依托分组教学、研讨、协作、活动参与等多种教学模式的相互交叉、相互渗透,并融合多元化的教学内容、多样性的教学形式、现代化的教学方法而形成的综合性、立体性的教学模式。结合软件工程课程特点,提出“项目驱动的复合教学模式”,以项目为主体,组织学生以团队的形式参加项目分析、设计、实现和管理,在项目实施过程中,激励学生自我认识,引导学生独立思考与创新,营造讨论争辩的机会和气氛,并以讨论的形式鼓励学生表达各自的观点和思想,从而积极主动地参与分析、概括或评价等思维活动,将软件工程的分析、设计、实现、管理等各个知识点的讲解融入项目实施的各个阶段。项目驱动的复合教学模式由以下几个环节构成: 1.学生分组。学生按系统分析、设计、实现、测试的角色组成4~5人的开发团队,选举一人作为项目负责人,明确各自的分工和职责,并协作完成,以培养学生的团队合作精神、沟通能力和协调管理等能力。随着教学进度展开,把项目实施与理论教学结合起来。
2.确定项目。项目的确定分为教学案例和演练项目。教学案例是教师用于组织课堂教学讲解的项目,由教师根据学生的特点确定。演练项目是在教师的指导下由小组根据各自的兴趣、特长自行选择,用于课后同步训练。
3.教学内容及方法的改革。教学内容的选取以整合相关课程中相同知识点使教学内容更加精炼为指导思想,根据市场和企业对软件人才的需求,将重要、经典的基本概念、知识点连同相应的技能串联起来讲授和实践。软件工程课程的教学内容将软件过程模型、工程管理、需求工程、分析建模、软件设计、软件构造、测试以及软件交付与维护为骨干,融入数据库原理、计算机网络、数据结构、操作系统等相关课程知识,按ASP.NET和J2EE两个方向构建组合式、模块化教学内容。在教学方法上,以培养学生的独立思考和创新思维为目标,将理论知识融入教学案例的讲解中,通过分析、演绎、推断、归纳,引导学生认真分析项目中体现的软件工程领域的问题,运用启发式教学方法建立教师、学生双向交互的教与学通道,启发学生对软件开发问题的认识和思考,激发学习的主动性,使其通过积极的思维和讨论获得知识。
4.演练项目的过程管理。演练项目作为课外同步训练项目,教师以需求方与技术顾问的双重身份参与其中。作为需求方,教师针对演练项目提供大致的功能需求,鼓励学生通过分析问题、调查研究、分析需求和管理需求等活动,学习软件需求工程的基础知识和基本技能。作为技术顾问,教师为学生提供相应的学习资源和解决问题的方法及手段的建议,引导学生独立思考和讨论。演练项目的实施按项目规划、迭代开发两个阶段组织进行。在项目规划阶段,完成定义项目开发过程模型、定义项目组织结构、分配人员角色、估算项目规模、制订进度计划。迭代开发阶段是由需求分析、软件设计、数据库设计、模块开发与测试各环节组成的循环逐步求精的过程。整个演练项目的实施要求在规范的、可控的过程中完成,具体保障措施如下:一是明确开发任务并落实到小组的每个成员,由项目负责人填写任务跟踪表,监督任务执行情况,小组各成员通过不同角色的任务分工,共同协作完成项目开发任务;二是实行每周例会制度,保证所有成员在规定时间进行讨论交流;三是将需求分析、软件设计、模块开发、集成测试等关键阶段产品置于配置管理的控制下,并实行阶段评审机制,要求各项目组在完成每个里程碑的任务后,提交相应技术文档,推荐一名代表就该阶段完成工作情况、遇到的问题及解决方法作小型汇报,并组织学生进行技术评审。
5.演练项目验收。在完成演练项目的开发任务后,由教师组织项目验收讨论会,要求每个小组演示项目成果,从系统背景、团队介绍、采用的技术、系统优势及存在问题等方面汇报,演示系统的各项功能,回答教师和同学的提问,以团队的形式提交软件需求规格说明书、软件设计文档、项目代码、软件测试文档、软件过程管理文档、每周工作报告以及任务跟踪表等材料。
6.课程考核。课程考核分为理论考核和实践考核两个方面。理论考核采取开卷考试,要求学生在规定时间内完成给定案例的分析和设计方案,重点考核学生思考、分析和解决问题的能力;学生的实践考核成绩由小组成绩和个人成绩两部分组成,小组成绩根据各小组提交的演练项目结题材料,并结合项目验收汇报情况进行评定;个人成绩根据每周工作报告和任务跟踪表由小组组长和教师进行综合评价。
进行教学改革的最终目的是培养符合市场和社会需求的创新型软件人才,在基于项目驱动的软件工程课程复合式教学模式下,培养的人才具有扎实的理论基础知识,通过相关知识的组合式、模块化的理论教学方法,强化学生的认知,使其更牢固地掌握理论知识;具有独立思考和基本的创新能力,在复合式教学过程中,通过引导、启发学生分析问题,积极思考和讨论,培养学生的独立思考和自主创新能力;具有团队协作精神,以项目驱动小组协作开发,培养团队合作精神。在项目进行的各个阶段,要通过明确任务、落实责任、任务跟踪、协作开发、定期讨论、阶段评审和项目验收各个环节的协同工作,达到培养学生的团队精神与合作意识的目的。
[参考文献]
[1]李超,谢坤武,向军.软件工程课程教学内容及方法探索[J].计算机时代,2010(7).
[2]教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业核心课程教学实施方案[M].北京:高等教育出版社,2010.
[3]庞雄文.基于实例的“软件工程”课程教学方法[J].现代教育技术,2010(S1).
[4]温颖,周昕.项目教学法在软件工程教学中的应用[J].科技信息,2010(24).
[6]姜雪梅,陈泰宇.基于双师型人才培养的软件工程方向课程体系构建[J].职业技术教育,2009(35).
[7]卢晓勇,揭敏,刘晓强.改革传统教学模式培养创新性软件人才[J].中国高教研究,2007(4).
[关键词]软件工程 项目驱动 教学改革
[作者简介]范会联(1971- ),男,重庆人,长江师范学院数学与计算机学院,副教授,硕士,主要从事软件工程、智能信息处理的教学与研究工作。(重庆 408100)仲元昌(1968- ),男,四川南充人,重庆大学通信工程学院,副教授,博士,研究生导师,主要从事通信与测控系统、无线传感器网络等领域的教学与研究工作。(重庆 400030)
[基金项目]本文系2011年重庆市教委研究项目“基于RFID的校园安全防范系统研究与设计”的研究成果。(项目编号:KJ111304)
[中图分类号]G642.3 [文献标识码]A [文章编号]1004-3985(2013)05-0147-02
软件产业是信息产业的核心、国民经济信息化的基础,已经渗透到各个领域。相关数据显示,我国软件开发行业人才需要量已经超过30 万人,并仍以每年20%的速度增加,其中初级软件开发工程师的需求量就高达20 万人,软件服务外包、3G 研发的人才缺口更大。但让人困惑的是,近年来失业率排在前10 位的专业中涉及计算机科学与技术。一方面每年相当一部分计算机专业毕业生就业困难,另一方面企业招聘不到对口的软件人才,这说明学校培养的软件人才与企业的实际需要存在较大差距。目前我国500 多所院校开设了计算机专业,培养方式各具特色,但培养适应企业需求的优秀软件开发人员,仍是教学实践中值得进一步研究和解决的问题。本文分析研究了软件工程课程的特点及传统教学实践中涉及的普遍问题,提出在软件工程课程的教学实践中引用基于项目驱动的复合教学式理念,并从教学定位、教学内容、教学方法、实践教学等方面进行了探索。
一、课程特点及教学定位
软件工程是一门理论与实践并重的课程,涉及内容广泛,从工程意义上讲,包括软件开发、维护和管理等活动的总体;从学科意义上讲,包括与软件开发相关的理论、原理、方法和技术。ACMCC2001 草案把软件工程学分为七大核心专题:软件过程和软件生命周期模型、需求分析、软件设计、测试和评估、软件进化、软件项目管理、软件工具和环境。为满足社会对不同层次计算机专业学生在软件工程方面知识和能力的要求,软件工程课程应设计成一个多层次的课程系列。针对计算机专业应用型本科学生,将教学定位在两个方面:一是从软件生命周期的角度,讲解软件工程的基本概念、基本原理和基本方法;二是从工程应用的角度,讲解系统性、规范化的通用开发技术。软件工程课程教学应既重视理论知识和分析问题与解决问题的方法,又重视软件工程实践。课程教学目标是使学生掌握需求分析、概要和详细设计及软件测试与维护等内容,用软件工程的原则、开发方法与技术实现中、小规模项目的开发与管理,使学生在基础知识与技能、团队协作能力、分析与解决问题、谈判与沟通能力、创新与发展能力等方面得到良好的训练,为将来从事大型软件系统的开发与维护打下扎实的基础。
二、传统教学方法存在的问题
1.教学内容枯燥、抽象、陈旧。目前的软件工程教材偏向纯理论介绍,主要讲解方法学,从结构化或面向对象的角度讲解软件开发过程的理论知识,缺少案例支撑。大部分学生对软件项目概念的理解是建立在其他课程设计的基础上,没有软件项目的经验,因而妨碍学生对软件工程中基本概念的理解,如可行性分析、需求分析、需求变更、过程管理、质量保障等,不明白为什么要做可行性分析、需求分析,以及需求变更的必然性及管理措施。随着软件系统向社会各方面的渗透以及软件系统的规模不断扩大,对软件系统的质量要求越来越高,这对软件工程课程的教学内容提出了新的要求。从内容上看,不仅要重视方法,还要重视开发工具与环境;不仅要重视开发过程,更要重视开发过程中的过程管理和质量保证措施,这些知识和技能,不能仅仅依靠书本和课堂教学来获得。
2.案例教学中采用的案例不当。软件工程的实践性很强,教学时一般采用案例教学法,方法的成效取决于选择的案例,案例如果选择不当,则教学效果肯定不好。很多教师在教学时,由于缺少实际软件项目的开发和管理经验,导致案例的选取要么不贴近学生实际,如机票预订、仓库管理项目,学生缺少实际接触经验,因而理解困难或不感兴趣;要么选择的案例规模较小,如简单的成绩管理系统,在学生的角度来看,可以直接进行设计和编码,不清楚为什么要进行可行性研究、需求分析;要么案例前后不连贯,如由于教师缺少实际项目开发经历,导致可行性分析的阶段选用机票预订,需求分析用仓库管理,而设计又选用人事管理等现象,导致学生对软件项目、软件工程没有建立完整的概念,缺乏对所学知识的整体认识。
3.重讲解、轻讨论,缺乏实战练习。软件工程课程的实践性要求很强,在传统软件工程教学过程中,教师一味讲解软件工程的基本原理、理论,或一味分析一些简单案例,忽视了学生主观能动性的发挥,没有让学生参与教材内容或案例的分析讨论。虽然有实验教学的要求,但一般只停留在组织学生编写软件项目设计文档的单一环节上,由于学生没有进行实际项目的演练,教学效果不理想。尽管这种以教师讲授为主的教学模式,在课堂教学中使用了一些情境教学,但仅仅遵循原有理论教学过程模式,并未按典型工作任务模式完成情境教学,培养出来的学生缺乏自主探索知识的能力和运用知识解决实际问题的能力。因此,切实加强软件工程教学的创新与改革至关重要。
三、项目驱动的复合教学模式
复合教学模式是以科学的教学理论为指导,依托分组教学、研讨、协作、活动参与等多种教学模式的相互交叉、相互渗透,并融合多元化的教学内容、多样性的教学形式、现代化的教学方法而形成的综合性、立体性的教学模式。结合软件工程课程特点,提出“项目驱动的复合教学模式”,以项目为主体,组织学生以团队的形式参加项目分析、设计、实现和管理,在项目实施过程中,激励学生自我认识,引导学生独立思考与创新,营造讨论争辩的机会和气氛,并以讨论的形式鼓励学生表达各自的观点和思想,从而积极主动地参与分析、概括或评价等思维活动,将软件工程的分析、设计、实现、管理等各个知识点的讲解融入项目实施的各个阶段。项目驱动的复合教学模式由以下几个环节构成: 1.学生分组。学生按系统分析、设计、实现、测试的角色组成4~5人的开发团队,选举一人作为项目负责人,明确各自的分工和职责,并协作完成,以培养学生的团队合作精神、沟通能力和协调管理等能力。随着教学进度展开,把项目实施与理论教学结合起来。
2.确定项目。项目的确定分为教学案例和演练项目。教学案例是教师用于组织课堂教学讲解的项目,由教师根据学生的特点确定。演练项目是在教师的指导下由小组根据各自的兴趣、特长自行选择,用于课后同步训练。
3.教学内容及方法的改革。教学内容的选取以整合相关课程中相同知识点使教学内容更加精炼为指导思想,根据市场和企业对软件人才的需求,将重要、经典的基本概念、知识点连同相应的技能串联起来讲授和实践。软件工程课程的教学内容将软件过程模型、工程管理、需求工程、分析建模、软件设计、软件构造、测试以及软件交付与维护为骨干,融入数据库原理、计算机网络、数据结构、操作系统等相关课程知识,按ASP.NET和J2EE两个方向构建组合式、模块化教学内容。在教学方法上,以培养学生的独立思考和创新思维为目标,将理论知识融入教学案例的讲解中,通过分析、演绎、推断、归纳,引导学生认真分析项目中体现的软件工程领域的问题,运用启发式教学方法建立教师、学生双向交互的教与学通道,启发学生对软件开发问题的认识和思考,激发学习的主动性,使其通过积极的思维和讨论获得知识。
4.演练项目的过程管理。演练项目作为课外同步训练项目,教师以需求方与技术顾问的双重身份参与其中。作为需求方,教师针对演练项目提供大致的功能需求,鼓励学生通过分析问题、调查研究、分析需求和管理需求等活动,学习软件需求工程的基础知识和基本技能。作为技术顾问,教师为学生提供相应的学习资源和解决问题的方法及手段的建议,引导学生独立思考和讨论。演练项目的实施按项目规划、迭代开发两个阶段组织进行。在项目规划阶段,完成定义项目开发过程模型、定义项目组织结构、分配人员角色、估算项目规模、制订进度计划。迭代开发阶段是由需求分析、软件设计、数据库设计、模块开发与测试各环节组成的循环逐步求精的过程。整个演练项目的实施要求在规范的、可控的过程中完成,具体保障措施如下:一是明确开发任务并落实到小组的每个成员,由项目负责人填写任务跟踪表,监督任务执行情况,小组各成员通过不同角色的任务分工,共同协作完成项目开发任务;二是实行每周例会制度,保证所有成员在规定时间进行讨论交流;三是将需求分析、软件设计、模块开发、集成测试等关键阶段产品置于配置管理的控制下,并实行阶段评审机制,要求各项目组在完成每个里程碑的任务后,提交相应技术文档,推荐一名代表就该阶段完成工作情况、遇到的问题及解决方法作小型汇报,并组织学生进行技术评审。
5.演练项目验收。在完成演练项目的开发任务后,由教师组织项目验收讨论会,要求每个小组演示项目成果,从系统背景、团队介绍、采用的技术、系统优势及存在问题等方面汇报,演示系统的各项功能,回答教师和同学的提问,以团队的形式提交软件需求规格说明书、软件设计文档、项目代码、软件测试文档、软件过程管理文档、每周工作报告以及任务跟踪表等材料。
6.课程考核。课程考核分为理论考核和实践考核两个方面。理论考核采取开卷考试,要求学生在规定时间内完成给定案例的分析和设计方案,重点考核学生思考、分析和解决问题的能力;学生的实践考核成绩由小组成绩和个人成绩两部分组成,小组成绩根据各小组提交的演练项目结题材料,并结合项目验收汇报情况进行评定;个人成绩根据每周工作报告和任务跟踪表由小组组长和教师进行综合评价。
进行教学改革的最终目的是培养符合市场和社会需求的创新型软件人才,在基于项目驱动的软件工程课程复合式教学模式下,培养的人才具有扎实的理论基础知识,通过相关知识的组合式、模块化的理论教学方法,强化学生的认知,使其更牢固地掌握理论知识;具有独立思考和基本的创新能力,在复合式教学过程中,通过引导、启发学生分析问题,积极思考和讨论,培养学生的独立思考和自主创新能力;具有团队协作精神,以项目驱动小组协作开发,培养团队合作精神。在项目进行的各个阶段,要通过明确任务、落实责任、任务跟踪、协作开发、定期讨论、阶段评审和项目验收各个环节的协同工作,达到培养学生的团队精神与合作意识的目的。
[参考文献]
[1]李超,谢坤武,向军.软件工程课程教学内容及方法探索[J].计算机时代,2010(7).
[2]教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业核心课程教学实施方案[M].北京:高等教育出版社,2010.
[3]庞雄文.基于实例的“软件工程”课程教学方法[J].现代教育技术,2010(S1).
[4]温颖,周昕.项目教学法在软件工程教学中的应用[J].科技信息,2010(24).
[6]姜雪梅,陈泰宇.基于双师型人才培养的软件工程方向课程体系构建[J].职业技术教育,2009(35).
[7]卢晓勇,揭敏,刘晓强.改革传统教学模式培养创新性软件人才[J].中国高教研究,2007(4).