林勇
【摘要】针对目前软件工程教学存在的问题,进行教学法探索和改革。在理论教学环节引入综合案例和“一页讲义”教学法提高学习积极性;在实践环节通过辅助软件加强各开发阶段知识的掌握和项目管理能力的培养,采用大系统子模块的综合实践加强学生的接口设计和团队合作能力。
【关键词】软件工程课程 案例教学 项目综合实践
【中图分类号】G712.4 【文献标识码】A 【文章编号】2095-3089(2016)01-0010-01
1.引言
软件工程是一门采用工程化原则指导高质量且有效的软件开发过程的课程。软件工程课程是信息专业重要的专业基础课,除了加深学生程序设计语言和数据库知识的掌握,更重要的是培养他们在软件开发管理、设计模式、系统开发工具和团队协作等多方面的技能。
传统的软件工程教学注重理论教学,没有很好地结合理论与实际应用,虽然教学过程中也引入的案例和实践环节,但没有做到有机的结合和及时的监控,往往留于形式 教学效果并不理想[1,2]。
2.教学方法探索思路
2.1 理论知识的案例教学与”一页讲义”教学
软件工程理论知识的教学还是以教师授课为主,向学生教授软件工程的基本理论和设计原则,内容力求少而精,目的是在较短时间内让学生了解现阶段最广泛使用的软件工程技术的理论基础,为下一步应用部分的学习奠定基础。首先,在教学过程中结合具体的软件开发案例,我们选择的案例不是孤立的个案,而是一组精心设计的能够贯穿软件设计开发过程的整体案例,我们选择的是一个基于Web的图书馆管理系统,由于学生对该系统业务流程和功能及操作都很熟悉,易于理解。教师在理论讲述时同步结合图书馆管理开发的各阶段进行讲解,通过这种边做边教的模式使得学生能够理论结合实际,加深印象;其次在每个章节学习之前我们都会给学生发一张“一页讲义”,讲义的内容分为两部分,一部分是本章的知识提要和重点的知识点,据此,学生即能掌握本章学习内容框架,并对学习的重点难点有所了解。另一部分是少量的课堂练习题,包括选择、填空和问答题,课堂中会抽10-15分钟作课堂练习并进行讲解讨论,及时巩固学习的理论知识。我们发现纸质的课堂练习题学生的参与度比互动性比仅使用PPT要高,且许多设计思路学生会直接记在上面,将来是比较好的复习资料。案例教学与”一页讲义”教学能较好地帮助同学认识软件开发引入工程化思想的必要性并提高学习的积极性。
2.2 拓展实践与强调团队协作
课程实践对软件工程课程具有非常重要的作用,通过实践,学生能够增强运用软件工程基础知识的能力,对系统设计技能进行训练、培养软件项目的开发能力和团队协作意识。实践环节包括两方面内容:基础实验和综合实践。
基础实验通过CASE(计算机辅助软件工程)工具的学习并运用这些工具加深学生对软件生命周期各阶段的理解,着重培训学生对需求分析、概要设计、详细设计以及软件测试阶段相应辅助工具的掌握,并运用这些工具进行各阶段辅助设计。例如:运用Microsoft Visio绘制软件结构图、程序流程图等;使用ERWin辅助数据库设计;运用Rational Rose完成需求分析与系统设计中的用例图、类图、顺序图和部署图等绘制。基础实验主要实现软件工程各生命周期阶段教学内容的延伸与应用,强调CASE工具的运用,使得软件开发能够更高效、标准地进行。
2.3 培养工程管理与应用能力
软件工程强调使用工程化原则指导软件开发,因此对于软件开发过程中的项目管理也是学生需要关注和学习的内容。除了理论教学中需要对软件项目管理进行讲述外,在基础实验和综合实践环节,我们也加入了项目管理内容的实践,通过Microsoft Project学习项目资源的合理调度,通过VSS(Microsoft Visual SourceSafe)进行代码管理,防止各成员间代码版本的冲突,并且要求学生在综合实践环节必须使用这些工具,并作为考核的一项内容。
2.4 创造实践环境
在软件工程学习过程中可以让学生接触一些现成的软件系统,通过对商业化软件系统的观摩,能够让学生认识复杂系统的集成方案,加深对整体框架的理解,同时对真正软件系统的界面设计、出错处理、系统管理等方面有所了解,学习软件设计开发过程中注重软件的可用性、可操作性、健壮性和可维护性。由于我们专业特点,与医院和医用软件公司有长期的合作关系,可以免费获得一些成熟的软件系统(如:医院信息系统),这为学生创造了一定的实践环境。计算机或其他信息相关专业的教师也可以根据自身专业特点有意识的收集具有代表性的系统,供学生参观学习。
3.教学方法具体实践
在教学方法实践过程中,理论和实践部分并不是相互独立的,应当根据理论教学的推进,结合相应的案例并且逐步实现各阶段的文档。我们在课程教学初期,首先给以自主结合的方式完成分组,选定相应需要开发的子系统并分配给各小组。题目选定后,随着理论教学的推进,要求各小组逐步提交各阶段文档,而不是学期末一起上交,这样能规范各模块的开发按照先文档,后设计再编码的步骤进行,避免系统编码完成后再补充文档的尴尬。部分文档提交后需要集中小组长进行一定的讨论,特别是整体数据库的设计需要所有小组共同分析讨论来完成,教师旁听并指导,指出缺陷和不足,并综合得到最终设计结果。各模块接口设计由相关模块小组长共同讨论完成。在学期末专门安排一次课用于综合实践答辩,由小组代表对软件的设计和开发进行总结汇报并演示开发的系统。
在课程的考核方式上进行优化,强调实践能力,因此综合实践的部分的考核比例增加至40%,理论考试占40%,而平时分占20%。为了避免部分学生“浑水摸鱼”,我们会根据小组成员对项目开发做出的贡献进行度量,设置相应的权重,综合实践的考核分数根据贡献权重计算得到。这样能够激发学生的实践热情,并合理的体现各学生工作量。
4.结束语
软件工程课程非常强调理论联系实践程,在理论教学中引入贯穿整个学习过程的具体案例,能够提高理论的实用性;“一页讲义”式的教学能够帮助学生对整体知识框架的把握,配合具体的课堂练习能够及时对理论知识进行巩固。在教学过程中,我们始终把实践环节放在主要的地位,通过综合系统子模块开发,让学生认识到模块化设计和团体协作的重要作用;我们同时也关注项目管理知识的传授。教学结果证明,通过上述教学方法的探索与改革,能有效地提高了学生的学习兴趣,增强了学生使用软件工程方法和技术解决实际问题的能力,培养了学生团队合作精神。
参考文献:
[1]张剑波,方芳,袁国斌.软件工程专业实践教学体系改革[J]. 计算机教育,2013(12):37-41.
[2]王卫红,杨良怀,江领.软件工程优势专业的建设与发展[J]. 计算机教育,2013(10):1-4,9.
[3]吴建斌, 陈中育,叶荣华.软件工程类课程教学模式改革探索[J].中国信息技术教育,2013(5):119-121.
[4]Hay P,Katsikitis M.The expert in problem-based and case-based learning: necessary or not[J]. Medical Education, 2001, 35(1):25-30
[5]徐利军, 张云,洪中华等,软件工程课程教学改革研究[J]. 中国信息技术教育, 2014(16): 10-11.