软件工程专业课程范例6篇

前言:中文期刊网精心挑选了软件工程专业课程范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。

软件工程专业课程

软件工程专业课程范文1

软件工程专业课程内容丰富,涉及通信工程、计算机技术、计算机教育及文科类经济管理等学科。除此之外,软件工程作为全球信息化技术发展的关键技术,要求从事软件工程相关专业的人员具备较全面的知识,要从多方面、多角度进行研究,比如技术方法、管理及工具等。我国软件工程技术发展较晚,该学科发展相对缓慢,课程授课模式较为传统,缺乏有效的课堂互动与讨论,注重讲解理论知识,实践内容的参与度与规范性与工程教育标准有一定距离,导致学生掌握的软件开发思想和技术与行业需求有一定差距。随着软件工程学科的发展,新概念、新技术和新方法不断涌现,未来软件工程专业的教学发展趋势如下。

(1)开放式授课。随着行业基础框架的构成、行业发展和技术融合的国际化,软件工程的授课将不再局限于某本教材或某个案例。

(2)小组式开发。软件工程开发要求开发人员具有良好的团队合作能力和沟通能力,因此应将学生设置在以模块开发为目标的开发小组,培养学生分析问题、协调问题、解决问题的能力。

(3)模块化集训。IT环境复杂度和历史遗留系统的增加,对软件工程领域提出新的挑战。模块化的思想能够通过抽象、封装、分解、层次化等基本的科学方法提高软件工程灵活性。

(4)真实性案例。软件工程授课依托于真实案例,可加快学生对软件工程的感性理解,从而解决学生对软件产品初始建模、过程开发、测试运行、质量监控、配置与过程的管理有系统性的掌握,锻炼学生对项目开发过程的整体把握能力。

2基于项目导向的课程体系构建

合格的软件工程专业学生应具备专业基础知识、工程技术能力以及良好的职业素养。教师应结合软件工程专业人才培养标准、软件工程行业开发规范和技术特征,在不同阶段将具体项目融入教学,基于项目导向理论知识,培养工程化特征明显的学生;在项目案例引入各教学阶段时,应夯实学生的基础理论知识与基本实践技能;在强化工程技术阶段,项目案例应涵盖前端技术课程,工程实训阶段项目案例需引入企业真实项目。通过3个阶段的教学,学生能够具备软件工程师的基本编程、综合设计及工程实训等能力。我们应分析软件工程专业知识体系与课程设置,根据普通高等院校软件工程专业课程规划、设置学时,构建层次清晰的教学实践体系及内容,培养应用型软件工程专业人才;同时,在IEEECC2001SE学科的知识体系基础上结合国内软件产业及校内办学的实际情况,在基础教学、理论应用、项目实践3个层次建立软件工程专业课程体系,基础教学部分主要讲授软件工程领域的基础理论知识,以开发过程为主线详细分析和讨论软件的需求分析、结构设计、程序实现、功能测试、变更与维护、软件项目管理等内容,让学生对此有感性认知。理论应用部分主要以面向对象程序设计为基础,锻炼学生的建模和实现能力。同时,采用实践案例,让学生掌握软件开发的方法和技术,培养学生的专业能力、管理能力、团队协作能力和职业精神。项目实践部分分为基础技能实训、专业技能实训、综合设计实训、科技创新实训等4个模块,可以基于项目建立多个小组,让学生以团队合作的方式在企业开发环境中实现一定规模的软件项目。为培养“理论知识实、实践能力强”的应用型人才,需将教学计划与项目实践环节紧密结合。基于项目导向的教学体系层次实施步骤如下。

(1)基本知识技能阶段:将.NET与JAVA开发作为实习内容,让学生了解面向对象开发的基本知识。

(2)综合知识实训阶段:让学生了解并掌握软件开发方法,熟悉.NET在软件项目系统开发中的具体作用,设计和实现功能界面,实现数据库设计与应用,分析和解决软件开发过程中出现的问题,并进行功能测试。

(3)应用能力提高阶段:对之前阶段开发完成的软件项目进行详细的分析与讲解,基于项目开发的实际应用强化软件工程的理论知识,让学生感受所学知识与实践应用的对应性,加强学生实践动手能力和团队沟通合作能力。

(4)职业技能与素养提升阶段:对软件项目范围、功能实现、总体进度、软件质量、管理配置等方面进行开发训练,锻炼学生整体项目的开发能力,逐步培养学生的职业技能,结合项目开发对学生进行测试与评价,培养和提高学生的职业素养。

3基于情景的教学方法实施

情景教学能让学生对知识有感性认识,提高对课堂内容的理解效率,因此需要在一个通用的软件开发环境中进行项目开发的学习。构建符合软件工程专业课程项目开发的开发环境是提升软件工程教学效果的关键。情景模式授课能让学生在模拟的软件工程项目中实战训练,通过层次提升效率,激发学生的学习兴趣,达到最佳教学效果。教师在情景模式的授课过程中担任项目总监或技术顾问的角色,组织学生进行技术交流、成果验证、变更审核等活动;学生会依据项目不同阶段的情景扮演不同职位,提升自身项目开发技术及管理能力,培养个性化思维和团队合作思维相结合的思考模式。基于情景模式的软件工程专业课程教学过程。在具体的教学实施过程中,教师利用项目导出教学内容,围绕项目案例设计教学情景,依据情景设计安排学生在项目团队中的不同角色,尽量让学生体验真实的项目开发流程。借助项目情景模式增强了课程内容的趣味性,最大限度地调动学生的主观能动性。项目导向下的情景模式教学需要对项目选定、教学内容设定、项目进程安排、学生角色安排、项目成果鉴定等方面进行管理。基于情景模式的教学要求,学生以项目团队的方式组成项目小组(一般由3人组成),开发具有一定规模且功能较为丰富的软件系统,侧重培养学生在项目开发过程中发现问题、分析问题、解决问题的能力,培养学生的团队合作精神,使学生体验软件开发的全过程。专业课程教学内容应把软件开发分解为项目前期准备、中期分析与设计、功能测试和软件交付等三大部分,具体内容为:

(1)项目准备阶段:教师在课程初始阶段,将软件项目需求告知学生,选定项目开发小组,制定开发范围和计划。

(2)分析设计阶段:项目开发小组基于需求和开发计划,编制需求规格说明书。依据项目的总体结构,逐步设计项目所需功能,并编写相应文档。

(3)测试与交付阶段:开发团队对完成的功能模块进行整合,测试功能性和稳定性,调试并完善软件系统,最终形成达到项目需求的软件集成系统。

(4)软件交付:教师运行集成的完整系统,组织学生交叉验收。验收管理是各团队共同检验工程是否达到预定目标并进行最终确认的重要一环,每位学生必须高度重视,支持项目验收工作。在情景式的软件工程环境中,学生真正体验到一种有序的、可控的、协作的软件开发过程,在分析问题、解决问题、协调冲突、消除矛盾的过程中享受软件开发成功的成就感。项目导向的情景模式教学可以让学生在团队中练习,在练习中学习,锻炼学生独立开发与合作开发项目的能力。

4结语

软件工程专业课程范文2

关键词:软件工程;课程体系;创新实践

我国于2002年设立软件工程,近年来发展迅速,目前已有多家高校设置了软件工程专业,软件工程专业的学生数量庞大。但是我国软件工程专业的人才质量与国际上仍有不小的差距,这就对软件工程专业课程体系提出了更高的要求。根据我国国情、市场的需求和高校的实际情况,对软件工程专业课程体系进行进一步研究与创新实践,对于培养出符合软件工程产业要求的人才有重要的意义。

1软件工程专业课程体系的内容

参照2004年国际上IEEE-CS/ACM的本科生软件工程教育计划SE2004,我国教育工作者研究出了软件工程专业本科生教育计划的相关文件。SE2004的主要内容是SEEK,包括计算机科学基础,软件建模及分析,软件设计、验证及确认,软件进化、过程及质量,软件管理,职业基础,数学与工程基础等十余个知识领域。由于涉及领域较多,所以一般建议最少课时不少于五百个课时。基于最少推荐课时,SE2004又给出了课程体系,包括初级、中级、高级课程,数学课程以及非技术课程。

初级课程包括计算机科学基础优先和软件工程优先两种方案。计算机科学基础优先以程序设计基础为主要课程,包括数据结构、算法等课程。软件工程优先以软件工程为主要课程,包括软件工程与计算、算法、数据结构等课程。高级课程包括自下向上和自上向下两种课程设计方案。自下向上以由小到大的顺序逻辑思路为基础,包括软件需求分析、设计、质量保证、测试等课程。自上向下以由大到小的倒序逻辑思路为基础,包括软件的系统构造,软件测试、设计等课程。

2软件工程专业课程体系建立的必要性

长久以来,我国高校的软件工程专业的人才培养以研究型人才培养为主,以理论知识和软件设计为主要内容,目的是培养软件工程和计算机技术领域的研究型人才。目前,高校中软件工程专业的学生在理论知识的运用上缺乏锻炼,将所学知识运用于实际学习与工作中的能力不足。所以,根据我国国情和高校的实际情况,面向产业需求,建立与国际接轨的软件工程专业课程体系对于人才的培养和输运都有重要的意义。放眼国外高校,他们都能根据国家与学校的特点,结合学生的个性与全面发展,培养出适应产业需求和社会发展要求的软件工程专业人才。他们的教育观念成熟,教学手段先进,实验条件优异,并且大多与相关产业的企业有联系。与我国高校相比,他们对于理论知识的理解更深入,与产业的衔接更好,更注重实践,有效提高学生们分析解决问题的能力。所以,为了尽快在软件工程上达到国际水平,与世界接轨,建立软件工程专业课程体系是必经之路。

3软件工程专业课程体系发展现状

3.1课时分配不合理

目前的软件工程专业课程体系中计算机科学基础所分配的课时过少,压缩得太厉害,无法清楚明了地讲解计算机科学基础,对教师和程序设计者产生了不小的挑战。

3.2软件工程专业课程体系的优化不足

沿用传统的计算机的相关课程,不利于教育工作者调整优化计算机的相关课程的教学内容,从而实现软件工程专业课程体系的精益求精。

3.3创新有余,实践性不足

软件工程专业课程体系的创新方案创新性足够了,但是缺乏实践性。程序设计是软件工程专业课程体系的重要组成部分,在教学过程中软件工程与程序设计有机结合,可以取得良好的教学效果。但是软件工程专业课程体系却从软件工程的角度入手,增加了难度,不易于初学者的入门与深入学习。

3.4初级课程与高级课程的衔接性不足

高级课程的两种课程设计方案,自下向上和自上向下的设计十分巧妙,但是初级课程的软件课程导论与高级课程的衔接不够明确和顺畅,有待进一步研究。

3.5非技术性课程不能有效的融合进软件工程

非技术性课程的内容设置过于简单,不能有效地将多方面的教学内容融合在软件工程专业课程体系中。

4软件工程专业课程体系的发展目标

软件工程专业课程体系的发展目标是根据国内外对于软件工程人才的需求,培养出理论知识与动手实践能力并重的专业人才,主要针对于软件开发、工程领域、现代软件工程三个领域。软件开发领域对于人才的要求是精通算法与数据结构,数据库,多媒体技术,计算机网络等专业知识。工程领域对于专业人才的具体要求是:精通电子商务、电子政务、企业与城市信息化、信息安全等知识。现代软件工程需要专业人才精通软件需求分析、体系结构、项目管理、测试与评估等方面的专业知识。件工程专业课程体系旨在结合市场需求与社会发展的要求,根据软件工程产业的需求,在理论知识的传授下,培养软件工程专业人才的综合能力,包括交流能力、团结意识、创新素质、法律基础、专业技能等。例如,英特尔公司产学合作专业综合改革项目自2011年在教育部指导下设立,旨在结合英特尔最新技术和解决方案,面向全国高等学校计算机学院、软件学院以及相关院系,通过支持专业课程体系建设、实验体系建设、专业课程建设以及实验案例开发,从而改进课程教学内容,优化课程体系,提升计算机、软件工程等专业教学质量。同时,英特尔公司将支持学校对以上相关专业进行系统化教学改革,以期课程建设成果能够在学校实施。2016年项目申请已开放,本年度重点将根据最新技术和教学要求,以培养计算机专业、软件和相关专业具有系统化能力的人才为目标,升级和开发计算机、软件和物联网专业课程专业综合改革试点。

5软件工程专业课程体系的完善与创新实践

5.1贯彻工程教育理念

按照软件工程相关产业的需求与实际环境来设计软件工程专业课程体系,规划具体的课程安排,组织形成软件工程专业基础课程、核心课程体系。

5.2以软件工程为主线

软件工程专业课程体系的设置需要以软件工程为主线来设计基础与专业课程的具体教学内容。基础课程旨在连接软件工程和程序设计,专业课程旨在锻炼学生在特定领域的理论知识的掌握与综合实践能力,最终都是为软件工程服务。

5.3培养学生的综合素质

改造传统的软件工程专业课程体系,强化初学者对于计算机系统理念的建立,对于基本概念的掌握与理解在计算机环境下培养学生利用基础理论知识解决实际问题的能力。

5.4改变非技术课程的教学方法

非技术课程目前存在的问题是衔接性不足,不能有效地融入软件工程专业课程体系。所以教师要注意改变教学方法,改革非技术课程的教学内容,基于软件工程链接非技术课程与技术课程为一体,从而更好地发展和完善软件工程专业课程体系。

5.5注重实践性教学

在专业课的基础理论教学阶段,在传授理论基础知识的同时,教师要注重理论与实践的结合,强调综合性实践教学。同时,在针对专业领域的中期教学阶段和毕业设计阶段也要给学生们提供实践的机会,提供综合实践教学,培养学生们的综合实践素养,利用已学知识解决实际问题的能力。

软件工程专业课程范文3

关键词:软件工程;课程体系;理论教学;实践教学

软件工程是指导计算机软件开发和维护的工程学科[1]。为了培养高层次、实用型、复合型、具有国际竞争力的软件人才,我国于2001年底启动软件工程学科的教学。国内很多高校(包括211重点工程、地方高校)都设立了软件工程专业,为社会培养了大量的人才。然而,目前在IT人才市场却出现了高校应届毕业生就业难和企业急需合格的IT人才的矛盾。这反映了高校传统的人才培养模式与软件产业对人才规格的要求之间存在较大偏差。因此,改革人才培养模式,优化课程体系结构,培养适应企业需求的实用型软件人才是当前高等院校的重要任务之一。

借鉴发达国家工程型人才培养的成功经验,根据“海西”区域经济发展现状和我校应用型本科教育的办学定位,提出我校软件工程专业人才培养目标是:软件工程专业本科学生应该既具有可持续发展潜力又适应当前软件产业岗位需求,具备较强的工程实践能力、必需的专业技能和职业素养,能够快速完成从学生到企业员工的角色转换。围绕上述目标,笔者从理论教学课程体系和实践教学课程体系方面,提出本科应用型软件工程专业课程体系的建构思路,并应用课程群方法对课程体系进行了优化处理。

1“核心稳定、方向灵活”的专业理论课程体系构建

“软件工程”学科特有的工程性,技术与管理的综合性,新兴学科的快速发展和变化等特点,使得课程体系设计面临一系列突出问题。通过对软件行业人才知识结构和综合素质要求的全面研究,借鉴国际先进的工程教育培养理念和国内其他高校应用型软件工程人才培养模式,结合“海西”区域经济发展现状及我院办学定位,提出既面向当前软件产业岗位需要,又兼顾本专业学生发展潜力培养,具有“核心稳定、方向灵活”的课程体系设计思路。

1.1专业必修课程体系设计策略

专业基础课程、专业核心课程应根据计算机基本知识理论体系设置。该课群主要培养学生具有扎实的计算机理论知识,具备良好的软件分析和设计能力,能够利用专业理论知识指导实践。为了培养学生潜力和可持续发展能力,提高学生未来职业发展的核心竞争力,避免“后劲不足”,在专业课程体系设计中采取了三个优先策略:

1) 基础课程优先策略。高级语言程序设计、离散数学、算法与数据结构、数据库系统原理及应用、微机原理及接口技术、面向对象程序设计、计算机组成与结构、数据通信与计算机网络、软件工程、操作系统原理及应用、软件测试技术等重要的专业基础课程、专业核心课程,必须优先保证其课时安排并配备最好的教学资源。

2) 程序设计优先策略。程序设计是学习后续课程所必需的技能,也是训练学生软件开发能力必要的手段。第一学期就安排了高级语言程序设计课程。其后,通过算法与数据结构、结构化程序综合设计、数据库系统原理及应用、C/S程序综合设计等课程,不断加强学生程序设计能力的训练。尤其是结构化程序综合设计、C/S程序综合设计这两门课程,被设计成以任务驱动的实践性实验课程,通过每周一次的案例设计指导和结果检查,来提高学生程序设计和项目开发的综合能力。

3) 专业外语优先策略。社会对国际化人才的需求越来越强烈,为了培养具备一定国际视野的IT专业人才,也为了使学生能更快更好地更新专业知识,增强其职业发展的潜力。将专业外语课提前到第三学期,并在专业基础课程、专业核心课程和专业选修课程中加入一定比例的双语课程,将英语融入到专业理论知识学习的过程中,为学生编写英文程序代码,查阅英文技术文献、文档扫除语言障碍。

1.2专业方向选修课的“逆推”设计法

基于软件企业岗位需求划分专业方向,努力缩小高校培养的软件人才与企业需求之间的差距。具体做法是:首先依据专业定位和社会需求选择若干个岗位确定为专业方向,如:企业计算方向、嵌入式系统方向、日语加强班、企业定制培养实训班(针对岗位到企业实训、请企业技术人员到学校授课)、考研班等。明确每个专业方向毕业生应具备的能力和应掌握的知识,采用“逆推”的方法[2]设计专业方向选修课群,制定模块化的专业方向选修课程体系,如图1所示。专业方向选修课设置要紧紧跟踪软件行业人才需求变化和新技术发展,不断进行动态调整加以完善,保持专业方向选修课设置的可扩展性和灵活性。

2注重职业技能培养,构建工程化实践教学体系

实践教学是指有计划地组织学生通过观察、试验、操作,掌握与专业培养目标相关的理论知识和实践技能的教学活动[3]。尽管实践教学部分的课时在总课时中所占比例不低,但实际的实践教学效果却并不理想。传统实践教学的主要弊端是:①忽视了理论课程与实践课程之间、不同的理论课程之间以及不同的实践课程之间的联系;②在课程设计和软件开发实践环节中,缺乏对过程的有效指导和控制,工程意识的培养和训练不够充分,难以培养学生的软件工程能力。

2.1以岗位技能培养为目标,构建三级实践教学体系

针对传统实践教学中存在的上述问题,提出以职业岗位能力需求为导向,构建工程化实践教学体系的思路。具体做法是:根据职业岗位对人才知识和能力的要求,制定工程实践教学的一级目标,将一级目标分解为二级目标,二级目标进一步分解为三级目标。三级目标、二级目标、一级目标分别对应课程实验、课程设计、毕业设计实践教学三级体系,如图2所示。

一级目标和每个二级目标都是由三个阶段组成:知识串讲;案例实现;项目完成。整个实践教学体系围绕学生专业技能和职业素质的培养分层次、分阶段实施,为学生提供了一条从编程到软件项目开发的渐进式发展之路,形成一个融基础理论、实验教学、工程实践为一体的整体化培训机制,使学生各方面的能力都得到全面均衡的发展,适应现代软件产业的需求。

2.2校企合作,加强学生职业素质教育

建立校企合作的企业实训基地,实施“3+1”教学模式。即大学最后一年,让学生到软件企业顶岗实训。通过真实的生产实训、任务驱动、项目导向,加深学生对软件工程实际运用性的理解,全面强化学生的专业实践技能,培养其工程能力以及工程经验,了解企业文化,树立团队合作精神,缩短学生走上实际工作岗位时的适应期。

3软件工程专业课程体系及其优化

软件工程专业课程范文4

关键词:软件工程;程序设计;课程群;建设;实践

软件工程专业的培养目标是面向我国软件产业培养急需的工程应用型人才。软件产业的发展要求学生具备较强的系统分析、设计、开发与维护能力[1]。为培养学生软件系统方面的相关能力,许多高校的软件工程专业都设置了系列课程模块,如程序设计课程模块、网络技术课程模块、计算机体系和操作系统课程模块、软件工程课程模块等,这些模块往往是一些单独课程的组合,有很多学生学了这门课程,又忘记了那门课程,到毕业时专业能力达不到社会所要求的层次。程序设计课程群是软件工程专业系列课程的重要组成部分,其承载的技能培养目标是专业培养的子目标[2],处于非常重要的地位。课程群建设是专业建设的一部分[3],有利于打通课程知识脉络,避免课程内容重复或前后脱节,使前后连贯,内容融合,进而获得整体优势[4]。程序设计课程群主要培养计算思维能力、算法设计与分析能力、程序设计与实现能力和系统分析开发能力[5]。学生通过程序设计课程群的学习,可掌握1~2门程序设计语言,更进一步理解程序设计方法,熟练掌握常用的数据结构和算法,形成良好的程序设计风格,可独立分析、设计和开发中小型软件系统。所以对程序设计课程群进行研究并积极实践对专业培养目标的实现具有重要现实意义。

1问题分析

目前,大多数高校信息类相关专业都开设了程序设计系列课程,一般为C语言程序设计、数据结构与算法、java程序设计等。许多高校都将C程序设计作为第一门程序设计课程[6],一般安排在第一学期或者第二学期,学完C语言之后,再学其他程序设计课程,如数据结构等。由于C语言本身比较灵活且语法内容比较多,对于初学者来说并不太好掌握。一些教师在授课过程中,没有站在软件设计的高度思考教学内容,往往过多地强调语言成分的语法和语义,而忽视了计算思维能力[7]的培养,使学生从开始就扎进程序设计语言的细枝末节中去,忽略了软件工程思想的渗透,到最后学生掌握了一些语法,却不能写出较为优美的程序或没有形成较好的程序设计思维和风格。算法是程序的灵魂,数据结构和算法在课程群中具有基础和核心地位[8]。在实际教学过程中,学生普遍反映数据结构和算法课程抽象难学,在学习和实际应用中出现的问题比较多,很难写出能正确运行的程序,学习过程中成就感不强,学完之后还是不知道如何应用,很难达到预期的效果。由于在前期的学习中,程序设计基础没有打牢,对常用的数据结构和算法没有真正掌握,模块化程序设计思维没有有效建立,良好的程序设计风格没有形成,导致后续的高级面向对象语言程序设计学习很难深入,最终导致软件分析与设计能力得不到有效的提升。

2程序设计课程群建设

我校软件工程专业采取校企合作办学模式,由吉首大学和中软国际共同建设,企业参与人才培养的全过程,在具体实施过程中,学校侧重于理论教学部分,企业侧重于实践教学部分[9]。程序设计课程群是软件工程专业课程体系的重要组成部分,企业参与讨论与建设,确定该课程群以软件设计能力培养为主线,以C语言程序设计、数据结构、面向对象技术、算法设计与分析几门课程为基础组建课程群,C语言程序设计开设在第一、二学期,数据结构、面向对象技术、算法设计与分析分别开设在第三、四、五学期,第六学期可开设JavaWeb程序设计或Asp.NetWeb程序设计,使课程群在能力构建和开设形式方面形成一个不间断的体系。

3程序设计课程群实施

3.1精讲课程主要内容,提高程序设计能力

课程组教师首先需要站在软件分析与设计的角度研究各门课程在课程群中的地位和作用,把课程群中的系列课程作为一个有机的整体,研究各门课程的主要教学内容,针对课程重点、难点、疑惑点进行精讲,做到理论与实践课并重,有效提高学生程序设计水平。在课程群系列课程中,由于第一门课程是后续系列课程的基础,所以学生必须掌握它。在C语言的教学中,要渗透软件分析与设计的思想,把握程序的主要框架,不纠缠于一些细枝末节的语法。函数是C语言教学中的重点,需要重点突破,从模块设计的角度来考虑函数设计,对于一个具体的函数,则要掌握函数的返回类型、参数类型以及参数个数。如用函数处理一个数组时,需要传递数组的首地址和数组的规模,首地址用指针表示,数组的规模则有两种表示方法,一是数组的长度,二是数组的起始下标和结束下标,这两种方式可能会分别应用到不同的地方,如果教师一直不提示第二种方法,则将来学生在写数组做参数的递归程序时可能会遇到困难。从多年的教学实践来看,如果学生真正掌握了函数设计方法,再加上必要的算法知识,一般情况下,程序设计就会变得得心应手而且十分有趣;对于数据结构课程,采取以数据存储(内存)为主线的方法,将重点放在数据的存储和相关算法方面,在算法实现时渗透模块化的思想,需注意头文件和实现文件的定义,因为数据结构内容具有很强的连贯性且程序的初始化工作较多,如链表的具体应用则先要建立链表、树的遍历和节点的查找等则先要建立树、图的遍历和最短路径及关键路径等则先要建立图,在实验过程中有意识地把一些基础工作放入头文件,则会极大地提高实验的效率;在面向对象技术教学中,以面向对象程序设计的方法为核心,以语言中的面向对象机制为主要内容,在适当的时候引入《ThinkinginC++》、《EffectiveC++》、《ThinkinginJa-va》等优秀书籍中的一些思想和经验,要注重面向对象程序设计过程中大的程序框架的合理性以及具体处理算法的正确性;在讲授算法设计与分析的时候,应集中精力将主要算法讲透,直到学生学懂为止,在实现算法时,应充分运用面向对象设计的思想,将算法封装在类中;在web程序设计教学中,采用案例驱动的方式,精讲软件项目设计中的主要方法和主要问题,培养学生工程化设计思想。精讲的目的是让学生多练,精讲之后要布置任务并为学生提供练习环境和相关指导,必须充分发挥教师主导和学生主体作用,教师要认真检查学生的作业、实验和练习情况,及时纠正问题,引导学生运用软件工程的思想设计程序,培养学生良好的程序设计思维和程序设计风格,激发学生自觉学习和实现相关算法,最终提高程序设计能力。

3.2大规模开展程序设计训练,培养程序设计能力

为培养学生算法设计与分析能力,学院在晚上和周末开放了实验室,在实验室搭建了ACM在线测评系统(ACMOnlineJudgeSystem),并接入了校园网,结合C程序设计、数据结构与算法等课程部署了大量习题。学院利用课余时间,有计划组织学生进入实验室进行编程训练,并为每次训练配备了指导教师。平时,学生也可以在寝室登录平台进行训练。教师在讲授C程序设计等课程的时候,要求学生利用课余时间在ACM平台上完成至少上百道题的训练,并将完成情况计入课程的平时成绩。通过大规模开展在线程序设计训练,学生的程序设计能力有了明显的提高。

3.3开展课程设计训练,培养工程化设计思想

在课程群中除开设理论课程对应的实验项目之外,还针对整门课程开设了综合性课程设计项目,如C语言课程设计、面向对象技术课程设计、javaweb课程设计,单个课程设计周期为1-4周。学院课程设计项目主要由企业教师指导完成,该类项目采用分组形式,在组内模拟软件企业运行模式设置相关岗位角色,学生在仿真企业环境中,利用仿真的软件开发项目,进行轮岗和角色体验,培养学生的软件工程应用能力、软件项目开发与测试能力、职业素质等,从而使学生熟悉软件项目开发流程和规范,养成良好的软件开发习惯。课程设计结束时,要求学生演示并讲解自己的项目开况,由学院教师和企业教师组成评定小组进行评分。

3.4改革考核与评价方式,理论与实践、平时与期末相结合

理论与实践相结合。程序设计课程群内的课程都是实践性很强的课程,其目的是运用所学的知识解决实际问题,决定了课程的期末考核要综合考虑理论和实践两部分内容。理论部分主要考查学生对基本概念的理解和对基本知识的掌握情况,实践部分侧重考查学生的综合应用能力,这两部分成绩都在期末完成,占课程总成绩的60%左右。平时与期末相结合。期末考核重在体现学习的结果,平时成绩则侧重于体现学习过程,在课程总成绩中,平时成绩占40%左右,即一门课程约有40分来自平时的学习过程。平时成绩一般由出勤、作业和平时实验情况、课程设计情况组成。在学期开始第一堂课的时候将课程评分方式告知每一个学生,必须抓紧平时的学习,若平时分小于20分,则取消课程考试资格或直接将课程总成绩记为不及格。

4结语

程序设计课程群对培养学生计算思维能力、算法设计与分析能力、系统分析与设计能力具有重要作用。本文分析了学生在课程群学习中遇到的一些问题,从软件分析与设计的角度对课程群进行建设与改革,提出了以C语言程序设计、数据结构、面向对象技术、算法设计与分析等几门课程为基础组建程序设计课程群,给出了课程群的主要知识与能力体系要求,通过精讲课程主要内容、大规模有组织地开展程序设计训练、企业教师指导课程设计、改革考核与评价方式等方法进行教学改革,学生的程序设计能力得了到较大的提高。

参考文献

[1]韦迎春,文俊浩,陈蜀宇.以能力培养为核心构建示范性软件学院实践教学体系[J].中国高等教育,2011(2):49-50.

[2]乔付,王国权,张凤武.CDIO理念下计算机程序设计课程群建设探索[J].内蒙古师范大学学报,2011,24(11):39-41.

[3]孙雷,王新.计算机专业程序设计课程群的研究与实践[J].教育教学论坛,2013(11):222-224.

[4]翁伟,吴克寿,吴芸,等.程序设计课程群建设探索与实践[J].计算机教育,2009(23):123-125.

[5]王海舜,蒋巍巍.基于程序设计能力培养的软件设计类课程群架构[J].计算机教育,2012(2):23-26.

[6]万臣,谢芳,胡泉.计算机专业程序设计课程群的建设与研究[J].合肥工业大学学报:社会科学版,2009,23(1):33-36.

[7]汪红兵,姚琳,武航星,等.C语言程序设计课程中的计算思维探析[J].中国大学教学,2014(9):59-62.

软件工程专业课程范文5

《软件工程》课程是该专业的专业核心课程。软件工程是指导计算机软件开发和维护的一门工程学科[2]。学生学习这门课程是要求他们掌握软件工程的概念、原理、技术和方法,从而经济、高效地开发出高质量的软件并有效地维护它。该类课程理论较多,同时其综合性、实践性要求较高。如何教授好这门课程是一个值得思考的问题。

1 《软件工程》课程教学中存在的问题

软件工程课程内容主要是许多概念和原理,教材上涉及的方法与技术并没有多难理解,但教学过程中仍发现有如下问题:

1.1 学生对软件工程类课程感觉概念、原理太多,难以记忆

软件工程课程主要讲解软件开发中的原理、方法、技术,很少涉及软件算法和程序设计。学生在学习时有个误区,觉得这门课既然是介绍各种概念和原理的,死记硬背就好了。而大量的概念和原理光靠死记硬背反而容易混淆,学习效果并不好。

1.2 教学模式单一,缺少有专业特色的固定的教学案例

目前软件工程课程仍以教师课堂授课为主,学生听课为辅,教学内容侧重于理论。实验学时较少,学生的实践多在课后完成,较难落到实处。课堂使用案例也多为教材上给出的小案例,实用性不强,缺少专业特色,学生很难接触真正的医学信息系统开发项目的实例。

1.3 学生缺少对相关课程间关系的理解

目前的教学模式是各门课独立讲授,对于软件工程课程而言其综合性很强,其理论与应用与许多课程相关,但学生在学习时是单独学习的,在头脑中没有形成完整的课程体系,不能把已学过的知识融会贯通的使用。

1.4 学生实践能力较差,难以满足专业需要

软件工程课程实践性要求高,而学生在学习的过程中,仅仅抽象的学习软件开发的过程,很少有机会参与软件开发的整个过程,从而实践能力较差。

2 解决办法

2.1 注重教学方法和教师的课堂感染力,结合学生实际教学

当课程内容不够吸引学生时,授课的效果就更依赖于教学方法和教师的个人魅力。教师要教授好一门课程,仅仅对课程内容的深入理解是不够的,有时要向一位演员一样的表演。声音抑扬顿挫的变化可以使本想打瞌睡的学生清醒。在教学中适度的加入一些包袱,博得满堂一笑,同样可以使涣散的注意力重新集中。学习软件工程课程的目的是为了让学生了解和掌握开发一个高质量软件的过程、方法及使用的工具。那么对于高质量软件要给学生一个定义,如果仅从理论上来解释将枯燥无趣。笔者在上课时以学生所熟悉的MS office、QQ等软件作例子,让学生从用户的角度讨论高质量软件的特性,将软件工程设计和实现阶段的一些基本原理、概念和启发规则引入进去,引起学生的共鸣,加深学生对这些原理、概念、启发规则的理解,在不用死记硬背的情况下轻松记住教学内容。

2.2 结合其他课程内容,使学生对所学内容融会贯通

软件工程课程的综合性和实践性都比较高。在教学中结合其他课程内容,并与其他课程教师交流共同教学,学生能将所学知识融会贯通,灵活应用,效果会非常好。例如在讲述软件工程需求分析阶段建立数据模式时引入数据库原理中的知识,解释数据对象、属性及数据对象间相互联系,以及它们对应到应用中的实现形式;在讲述设计与实现阶段内容时,可引入算法设计与分析课程中的知识对设计思想、代码的构造进行说明;讲述实现效率时,引入算法设计与分析中的时间复杂度和空间复杂度的概念来讨论效率问题,讨论存储效率时还可引入操作系统中存储调度的原理加深学生的印象。

在我校医学信息工程专业课程计划中,软件工程是在大三上学期开设,大三下学期还有《J2EE架构设计与开发》和《综合课程设计》两门课,结合这两门课,让学生分组以软件工程方法开发一个软件,并交付相应文档,从而再次巩固学生在软件工程课程中学习的知识并加以应用。

2.3 采用项目驱动模式,结合项目实例,使学生学以致用

采用项目驱动模式教学时应注意以下几个问题:

(1)尽量使用实际案例,虚拟的案例因为没有需求方,学生在需求分析和需求定义时很容易流于形式,体会不到获取需求有多么的困难,反而会觉得获得需求很容易,难在编程。在我校的教学中,软件工程前期有《医学信息系统》课程,为学生介绍医院的一些管理流程,并指导学生开发相应的软件;同时学院经常组织学生去医院实地参观;学院教师也经常与医院或企业有一些软件开发的项目。这些都为软件工程课程提供了很好的实际案例。

(2)指导学生分组,学生分组时最好不要任由学生自由分组。学生自由分组时,往往编程能力好的同学抱成一组,其他的同学以关系疏密来确定分组。导致一个项目组中只有个别学生起到作用。使整个教学过程流于形式。可以先让学生自由报名担当项目负责人,然后以公开竞聘的方式确定项目负责人,这个过程中,需要老师对学生有一定了解,对竞聘方式和过程加以引导,确定有组织能力和负责任的同学担任。然后再由个人向项目负责人申请职位(如软件设计人员、软件架构人员、程序员、软件测试人员等),一般一个项目组5-6人,由项目负责人决定小组人员,项目负责人负责项目的整体管理和协调工作。因为职位都是自己申请的,所以最后在项目实施时,各人职责明确,不会出现人浮于事的状况。

(3)定期检查工作进度。如果没有定期的工作进度检查,学生可能会直到课程快结束时才赶紧写各类文档交付了事,达不到教学目的,学生无法体会到软件工程在实际应用中的意义。所以要求各个项目组跟随课程的进度按时间段完成包括可行性分析报告、需求规格说明书、总体设计规格说明书、详细设计规格说明书、测试计划、源代码等各类文档。学时允许的话,安排几节课作为工作汇报会。适度的工作汇报会可加强小组间的交流,让学生从别人的工作中发现自己工作的优势和不足。每次汇报会的发言人由每小组成员轮流担任。笔者认为通过软件工程课程教学提高学生汇报工作的能力和与人交流的能力也是很重要的。教师对学生的文档和汇报予以总结和点评,在对学生的工作予以肯定的基础上提出对学生所给方案的改进意见或建议。毕竟软件开发的过程中没有唯一标答,学生的思路与老师的不同是很正常的现象,不要一味否定从而打击学生独立思考的能力。以开放的思想与学生讨论,更能促进学生更深入的思考。这样既能加深他们对软件工程理论的理解,同时也提高对这门课程的兴趣。

软件工程专业课程范文6

关键词:整体项目模式;项目Bus;软件工程;教学

0 引言

文献1论述什么是整体项目模式以及整体项目模式的优缺点,文献2论述整体项目模式下软件工程专业的教学体系结构,同时也提到软件工程专业教学方面的要求,主要是针对教师的要求。在实际过程中,整体项目模式下软件工程专业的课程教学较为复杂。首先,需要理清专业课程之间的相互关系;其次,需要明确专业课程和项目过程之间的关系;第三,需要掌握专业课程教学和实际项目之间的切入点、重点和难点;最后,学生要能切实根据自己所做的项目,从不同的侧面或教学内容方面书写项目文档,并认识到同一项目可以从不同的角度进行分析、设计和编程。

传统的专业课程项目教学和整体项目模式下的专业课程教学存在很大区别。传统的专业课程项目教学主要是没有从整体项目模式考虑教学问题,割裂了专业课程之间的相互联系,只从该课程的教学内容方面列举案例,学生对教学内容的认识具有片面性和局限性,不能建立起对知识体系的整体观念。在实践教学过程中,学生曾经提出过很多问题:软件工程和结构化设计、面向对象设计有什么不同?它们之间有什么联系?为什么要学习面向对象?不学习可以吗?作为一个专业课任教师,如何进行解释?如果学生有足够的项目经验,前期是否一定要有详细的分析和设计文档?针对最后一个问题,若是不具备丰富项目经验的教师回答,那答案是一定要有详细的分析和设计文档;但是实践经验丰富的教师则认为这个问题的答案是不一定的。小型或者微型项目的前期不一定要有详细的分析和设计文档,可以直接在编程过程中进行分析和设计,那么这是否违反了软件工程呢?当然,答案也是否定的。如教师在讲授面向对象的软件开发方法课程时,必须强调某一开发方法的优缺点,可以综合运用其他开发方法如结构化分析方法、形式化编程,甚至弱化分析过程,强化设计和编码过程,主要目的是明确整体项目开发过程。

1 软件开发流程和系列课程之间的关系

1.1整体项目模式下软件工程专业教学体系结构

任何课程的设置不能脱离教学体系结构。一个好的教学体系结构能够帮助学生在头脑中树立完整的知识结构,让学生主动获取相关知识。在教学过程中,教师首先要明确该课程在整个教学体系结构中的位置,建立项目开发过程的全局观。文献2中建立的整体项目驱动模式下软件工程专业教学体系结构如图1所示。

从图1中可以看出,项目Bus横贯整个专业课程,教师和学生各自只使用同一个项目案例贯穿于系列课程中,从而从不同的角度让教师讲授、学生学习同一个项目的相关内容。

1.2软件开发过程流程

图2所示是笔者在软件开发过程中总结出来的一套软件工程专业软件开发过程流程,包括软件开发过程、软件工程文档、软件标准规范、实际软件开发规程等方面的内容。在每一门课程的开始和结束阶段,笔者都要将该图展示出来,让学生明确自己已经学到了哪些内容,还存在哪些欠缺。

1.3软件开发过程对应的专业课程设置

笔者有幸为中南民族大学软件工程专业以及本校与美国威斯康星大学合办的3+2软件工程国际合作试点班的学生讲授部分专业课程,包括软件工程、软件测试、用户界面设计、软件项目管理、面向对象的软件开发方法5门课程。对于相关的其他专业课程,我们将不做说明,如CMMI、软件过程、软件质量保证等。

这些课程与软件开发过程流程是一一对应的关系。软件工程课程是专业核心课程,涉及内容广泛,是其他专业课程的基础,也是整个软件开发过程流程的基础,主要内容包括软件需求提取、分析、设计、测试、维护变更管理以及软件质量控制、软件项目管理、软件开发配置变更管理、软件开发标准以及软件开发方法。软件测试贯穿软件开发过程的始终,包括用户需求的确认、用户界面的确认以及单元测试、集成测试、系统测试、Alpha/Bete诅测试、评审、验收等内容。用户界面设计主要包括软件界面设计理论、原则和规范,在实际软件开发过程中,是图2中的系统概要设计/用户界面驱动分析部分,通过与用户反复沟通确认需求,是测试的基础,同时也是软件编码阶段、评审、验收阶段的依据。软件项目管理主要对软件的质量、成本和进度进行管理和控制,同时考虑如何在软件开发过程中避免不必要的风险或者降低风险的影响。面向对象的软件开发方法着重于软件开发过程中面向对象的需求分析和设计,包括用户分析、界面设计、类模型、动态模型、状态模型等一系列的分析和设计。

这5门专业课程从不同的侧面讲解软件项目的开发过程和方法,各有特点。但是对于为什么要学习这几门课程,以及它们在软件开发过程中处于什么样的位置,起到什么样的作用,是教师在教学之初就应该明确的。

2 整体项目模式下系列课程的教学

根据整体项目模式原理,实践项目应贯穿到各专业课程之中,系列课程最好使用同一项目,这样更能加强学生理解软件开发过程的不同方面。该项目在专业课程开始之前就必须存在,即已经完成或正在进行中的实践项目,因此,系列课程必须是相互联系并且能基于同一项目案例,这和传统的项目教学方式虽然模式一致,但是效果却有本质的不同。图3为系列专业课程的项目案例、课程和学生实践案例示意图,5门课程都基于同一实际项目案例,学生根据自己所做的项目,按照不同专业课程要求的格式和内容书写相关文档。

2.1先案例后理论的案例驱动教学模式

软件工程专业的特点是实践性非常强,软件工程的很多理论都来源于对实践的总结和归纳。因此,教师在教学过程中采用先案例后理论的案例驱动教学模式,符合软件工程专业的授课特点。

首先,教师要讲解实际项目案例的文档,该文档是一套完整的、从不同侧面反映软件开发过程的实际文档。对于每一门专业课,教师首先讲解需求提取、需求分析过程、功能提取、系统功能结构框图等,让学生明确该系统的背景和要解决的问题,以及需要具备什么样的功能以实现目标。

其次,教师要联系实际项目案例,讲解课本上的理论,将每个理论知识点与实际的项目案例相结合,让学生充分理解理论。在实际讲解过程中,对于新开课,新教师若碰到教学学时偏少的状况,可以言简意赅地讲解重点知识;实践经验丰富的教师,碰到学时偏少的情况可以精简案例功能,讲解1~2个功能即可。

最后,教师必须强调实践的重要性并给出标准的文档规范,要求学生按照自己的实际项目书写标准的文档。在每一门课程讲解完毕后,教师再一次帮助学生回顾该课程在软件开发过程中的位置。

以软件项目管理为例,在正式进入课程教学之前,教师需要做大量的工作,首先需要准备的文档有项目需求、项目需求分析报告、可行性分析报告、项目开发计划书、项目Demo程序演示、软件项目投标书、软件项目开发合同。然后,开始进人软件开发项目管理过程教学,软件项目主要内容有成本管理、进度管理、人员管理、风险控制等理论内容。实际的软件项目管理主要分为4个阶段:IT项目的启动阶段、IT项目的计划阶段、IT项目的执行控制阶段、IT项目的收尾阶段,这在一般的教材中很少提及,但是教师在内容讲解中要明确阶段任务。IT项目的计划阶段涉及48个文档;IT项目的执行控制阶段涉及45个文档;IT项目的收尾阶段涉及14个文档。

教师在讲解合同的内容时,可以直接参照“软件项目开发合同”进行讲解。对于必不可少的合同内容,教师就必须跟学生讲清为什么必须要包含这些内容;讲解成本计算的时候,根据文档“工作包、进度和预算”进行项目的WBS分解以及基本的估算方法。

总之,由于教材先理论后案例的局限性,在听课之初,学生觉得枯燥乏味。而教师通过先案例的方式能有效调动学生在课堂上的学习积极性,为后面的项目实践奠定基础。

2.2学生项目实践环节

每一门专业课都有上机实践部分,学生在实践课上主要是书写文档。每门专业课都有各自不同的文档,软件工程课程要求学生必须完成标准的13个文档;软件测试课程需要软件测试报告文档;软件项目管理课程有127个文档;面向对象的软件分析方法课程有包含9大部分内容的软件项目分析与设计文档。每一门课程的文档内容非常多,要求每个学生最好独立完成,主要训练每一个学生的文档书写和理解能力。

需要强调的是,学生书写的项目文档一定要给出标准的、规范的文档格式,包括目录、段落、标题、字体等排版之类的要求。项目模板可以采用软件工程国标文档或者相关的其他标准文档,最好和某一软件公司的案例文档格式相一致。笔者在软件公司任职过程中,很多刚参加工作的大学生书写文档的水平非常差,主要是文档格式、结构和内容混乱,往往给人留下非常不好的印象。整体项目驱动模式下的课程教学,首先强调的就是文档格式和正确的文档排版,其次才是内容的正确性与完整性。

在学生项目实践中,任课教师最好跟踪指导。学生每次在实验课上必须完成相应的实验,并把实验的电子文档通过教学资源管理系统或以电子邮件的方式提交给教师。电子文档的批改能快速纠正学生文档格式不规范以及内容方面的错误,但这个工作量往往很大,每一次电子作业批改的工作量往往是学生数量的3~4倍。这是因为学生按照批改意见进行修改后又会返回给教师,最终达到合格标准的电子文档往往会被修改2~4次。

2.3考核方式

完成每门课程的项目文档是学生对文档书写熟练程度以及课程内容理解的直接反映,也是培养软件开发过程中需要具备的素养和习惯的有效途径,克服学生疏于或懒于书写文档的缺陷。因此,教师需要对学生书写的项目文档进行考核并将其反映在学生成绩上。项目文档的成绩占学生总成绩比例的30%~50%较为合理。

2.4教学效果

笔者经过近2年的教学实践,取得了良好教学效果。以中南民族大学软件工程专业2008级学生为例,首先,学生很顺利地完成了各自的软件项目,包括中南民族大学学生基金项目;其次,学生能很好地书写申请软件项目著作权系列文档以及毕业论文,书写的文档格式规范,只需稍加修改就能将文档立即转化成学术论文并发表。这表明学生无论是在文档格式还是在内容编排上都取得了进步,进一步提高了在软件开发过程中应有的素质。这也是软件工程专业学生和计算机其他专业学生之间非常明显的差别。

就前2届学生的就业情况,笔者回访了2家用人单位,他们对中南民族大学软件工程专业毕业的学生刮目相看,称赞学生书写的项目文档很规范。