基于集中形式的软件工程课程设计

时间:2022-09-23 02:33:41

基于集中形式的软件工程课程设计

摘要:探讨软件工程课程设计的组织形式,对基于集中形式的课程设计准备、实施与评价环节提出建议,同时讨论课程设计对课程教学的一些启示。

关键词:软件工程;课程设计;实践教学;集中

软件工程是计算机科学与技术专业实践性非常强的课程,实践教学环节的组织是教学的重要组成部分,直接关系到学生对知识的掌握与应用能力。课程设计作为实现实践教学的一种重要形式,已经在越来越多的计算机专业课程中得到应用。

软件工程课程设计的目的,是让学生在掌握软件工程知识的基础上提高实践动手能力,熟悉软件开发过程,掌握常用软件工程工具的使用,学会撰写软件开发各个阶段的规范文档,提高团队协作能力,为将来从事软件开发工作打下良好基础[1-2]。

1课程设计的组织形式

不同院校实践教学的组织主要有3种形式:

1) 将软件工程课程设计作为一门课程。在软件工程课程后开设,许多有软件工程专业的学校这样做。

2) 将软件工程课程设计作为软件工程课程的一个教学环节,但是不占用课堂教学时间,由学生在课余时间完成,教师进行指导,学生以大作业提交成果。

3) 将软件工程课程设计作为软件工程课程的一个教学环节,同时安排一定的时间集中进行。

我校计算机科学与技术专业基本上采用第3种形式,在软件工程课程结束前几周专门安排一周的时间进行集中的课程设计,教师对学生进行集中的辅导与检查,最后还要进行答辩。

2课程设计的主要环节

2.1课程设计的准备

1) 知识准备:除了软件工程理论知识之外,在课程设计时还需要其他知识,较为重要的是CASE工具的使用。在讲授需求分析时,教师可以介绍画图与建模工具Visio、数据库建模工具PowerDesigner;在讲授软件测试时,教师可以介绍单元测试工具JUnit、缺陷管理工具TestDirector。介绍这些CASE工具时,教师只需画龙点睛,着重介绍软件的使用流程,至于软件的具体使用,则引导学生在课余时间自学掌握[3]。

2) 题目选择:课程设计集中进行的时间不长,因此不宜选择难度较大的题目,要让学生能够理解。我们选择的题目有与学校管理相关的,比如学生档案管理、学生成绩管理等;有与中小企业管理相关的,如进销存管理、工资管理等;简单Web应用系统,如在线考试、在线招聘等;还有一些小游戏,如连连看、24点纸牌等。针对题目,教师要花一定的时间给出简要的需求陈述,如果只提供一个题目,学生基本没有项目开发经验,可能无从入手。

3) 学生分组:成功的软件项目大都是团队开发的成果,应该对学生进行分组,以培养学生的团队协作能力,一个班级可分为几个到十几个小组。

4) 教师安排:课程设计的辅导教师主要由软件工程课程的授课教师及实验室的辅导教师组成,有条件的学校可以聘请IT公司有经验的系统分析师、软件工程师担任辅导工作。每次课程设计由2~3名教师参与辅导,每位教师平均辅导4~5个小组。

2.2课程设计的实施

课程设计的实施是课程设计的主要阶段,应该遵循以学生为主体、教师为主导的方针。

1) 分组确定与题目安排。

前几年实施课程设计时,我们曾尝试在学期初就把分组及题目安排好,让学生边学习边进行课程设计,但我们忽视了学生没有任何软件工程经验,这样大部分小组到了集中阶段就是不断地修改代码和文档。这一两年,到了集中阶段的前两周,我们才把分组与题目安排好,分组采用学生先自行组合,教师再进行调整的方式,使各个小组均达到较好的优化组合。每个小组设一个组长,负责项目的总体协调,确认各个阶段要提交的文档,以及答辩时作为主讲人。题目安排后,根据每个小组的实际情况,选择采用传统方法或面向对象方法。

2) 集中阶段。

集中阶段的前一周,教师向学生介绍每天需要完成的工作及需要提交的文档。集中阶段的每一天,教师不是被动地等待学生的提问,而是每天上午主动对每个小组进行半个小时的检查与辅导,检查上一天的成果,解决学生遇到的困难,并给出下一阶段的要求。下午,教师的工作相对灵活些,可以随时查看学生的进度,检查学生已经提交的文档,针对个别小组进行辅导或者对一些典型的问题进行统一讲解等,各天安排如下:

第1天,确定需求。要求学生在第一天来时提交一份初步的需求规格说明书,教师根据这份说明书与学生沟通,帮助学生确认需求,理清系统涉及的主要业务流程。对采用传统方法学的小组,要求画出各级数据流图及给出相应的数据字典,涉及数据库的要给出E-R图,可以借助Visio和PowerDesigner完成这些工作;对采用面向对象方法学的小组,要求画出用例图以及主要用例相应的活动图或状态图,另外还要给出领域模型,用类图表示,可以借助Rational Rose完成这些工作。教师检查学生所做的上述工作,一定要纠正学生错误并且指出原因,要求学生修改与完善说明书,同时提出总体设计需要做的工作。学生可以根据与教师的沟通继续后续的工作,教师则进入下一小组的辅导工作。以后每天都要重复这项工作,每个小组与教师的沟通为半小时左右,虽然存在一定的时间差,但对总体的工作影响不会太大[4-5]。

第2天,总体设计。经过第一天的工作,各个小组都提交了比较规范的需求规格说明书。教师再次进行最后的检查,再根据各小组总体设计的情况进行检查与交流。对采用传统方法学的小组,检查从数据流图映射出的功能模块是否正确,帮助学生进行功能模块的调整,涉及数据库设计的,帮助检查数据库的设计是否合理;对采用面向对象方法学的小组,着重检查细化后的类图,类与类之间的关系及类中服务的设计是否合理,还要检查主要流程的时序图或协作图是否正确。最后教师对详细设计要做的工作提出要求。

第3天,详细设计。这一天,教师还是先检查总体设计提交的一些文档,要求学生作最后的修改及调整。接着针对详细设计进行检查与交流,对采用传统方法学的小组,主要检查各个功能模块的程序流程图(或PAD图或伪代码)是否正确,并且对人机界面设计提出建议;对采用面向对象方法学的小组,主要检查构件图以及类中服务的详细设计,同样也要对人机界面设计提出建议。最后教师对程序设计提出要求。

第4天,程序设计。经过前几天的工作,系统离实现越来越接近,这一天教师对详细设计提交的文档作最后检查。在程序设计阶段,主要检查代码的规范以及一些关键代码的编写。安排辅导教师时,可以根据教师对某种编程技术的熟悉程度。这一天,教师还要对软件测试提出一些要求。

第5天,测试调试。这是集中阶段的最后一天,教师先检查程序设计的进行情况,提出一些要求,建议学生先采用手工测试的方式,手工设计测试用例并且执行这些测试用例,这样可以掌握测试的流程,也有利于今后进一步掌握一些测试工具。教师还可通过运行程序检查最后的实现结果是否与前面的设计相符,如果不相符,要帮助学生找出原因。

5天的集中时间相对一个软件的完整开发周期来说偏短,也没有把大部分的CASE工具都用到,但经过这段时间,学生经历了一次强化的软件开发训练,对软件的开发流程有一个整体认识,同时在文档的规范、CASE工具的使用及团队合作等方面都有所收获。

3) 答辩。

答辩安排在集中阶段一周之后,在这之间,各小组还可以对软件及文档作最后的完善。答辩过程相当于一次简化的毕业论文答辩,由组长进行陈述,讲解设计的主要思路,简要演示系统的主要功能,说明各个成员的分工,时间大概10分钟,然后回答教师提出的问题。整个答辩过程控制在20分钟左右[6]。

2.3课程设计的评价

答辩完成后,学生提交软件及相关的文档,文档主要包括需求说明书、总体设计说明书、详细设计说明书、程序源代码、软件测试报告、用户手册、小组人员分工说明等,教师根据这些材料,结合集中阶段的检查及答辩时的情况,先对每个小组进行综合评价,再根据小组人员的分工,给每个学生评出具体的成绩,分为优、良、中、及格、不及格5个等级[6]。

3课程设计对课程教学的启示

1) 在课程教学学期初,教师要强调软件开发各个阶段的重要性和连续性。在刚开始进行课程设计时,一些小组因为理论知识掌握得不太好,对自己做的项目没有信心,但随着课程设计的进展,他们最终取得了一定的成果。教师可以通过向学生介绍一些成功与失败的软件开发案例来向学生强调这一点,学生的学习目的性在一开始就可以得到强化。

2) 教师在讲授一些工具的使用时,应该多采用案例教学,并且让学生多练习。比如数据流图,基本画法并不复杂,但在课程设计时,却几乎没有一组学生能够画得全对,而且有一些是明显的错误,教师在讲授数据流图时,若能多讲解一些案例,同时多布置一些题目让学生练习,学生的掌握情况就会好得多。

3) 教师本身要加强自身的软件开发能力训练。课程设计的集中阶段辅导教师要对学生进行全方位的指导,这对辅导教师本身的素质提出了很高的要求。教师在平时若能参与实际项目的开发,或到正规软件公司进行学习与交流,在辅导学生时就可应付自如。

4结语

软件工程课程设计是软件工程实践教学的重要组成部分,合理的组织,精心的准备,加上有序的实施,可以取得良好的教学效果,使学生的实践能力得到很大的提高,同时培养他们的团队精神,增强他们的学习自信心,并为毕业后从事相关工作打下良好基础。

参考文献:

[1] 朱大勇,张新丽,李树全. 软件工程综合性课程设计的教学实践[J]. 计算机教育,2009(15):160-162.

[2] 高禹,李鑫.软件工程课程设计中的几点思考[J].计算机教育,2009(15):163-164.

[3] 杨小虎.软件工程课程设计[M].杭州:浙江大学出版社,2007:1-17.

[4] 刘敏莺,杨丽,文学义.Rational Rose 2003基础教程[M].北京:冶金工业出版社,2005.

[5] 张海藩.软件工程导论[M].5版. 北京:清华大学出版社,2008.

[6] 杨少波.J2EE课程设计项目开发指导[M].北京:清华大学出版社,2009:369-382.

Course Design of Software Engineering Based on Centralized Form

WANG Rong-hai, ZENG Yu-zhu, LIAO Zuo-bin

(College of Mathematics and Computer Science, Quanzhou Normal University, Quanzhou 362000, China)

Abstract: The paper discusses the organization of software engineering, and advances some recommendations about the preparation, implementation and evaluation based on centralized form. This paper also discusses some inspiration of course teaching from course design.

Key words: Software Engineering; course design; practice teaching; centralize

上一篇:应用DBR的人工智能课程教学 下一篇:数字逻辑实验教学改革探索