软件工程课程设计中的几点思考

2009-06-18 05:05
计算机教育 2009年15期
关键词:软件工程指导课程设计

高 禹 李 鑫

摘要:本文探讨了软件工程课程设计中要注意的几个问题,这些问题包括:合理选择课程设计题目、摆正编写程序工作的位置、培养整体观念和全局意识、熟悉常用技术和工具、学习和运用新知识、提升综合素质。

关键词:软件工程;课程设计;实践;指导

中图分类号:G642 文献标识码:B

软件工程是计算机科学与技术本科专业一门重要的专业课。一般在软件工程课程结束后,会安排一些时间让学生做软件工程课程设计。软件工程课程设计的内容是让学生运用软件工程的知识设计一个应用软件系统,并写出相关的设计文档材料。

做软件工程课程设计的目的,是让学生加深对软件工程知识的理解,训练学生的动手能力,让学生学会开发软件的常用方法,熟悉软件开发的过程,熟悉各种软件开发文档材料的写作,积累软件开发的实践经验,为将来从事软件开发工作打下良好基础。

在指导学生做软件工程课程设计时,以下几个问题应该引起指导教师的注意。

1合理选择课程设计的题目

由于该课程设计与软件工程课程内容密切相关,选题工作可以在软件工程课程开始讲授时布置下去,让学生有充足的时间思考,思考成熟后,在指导教师帮助下,将课程设计题目确定下来。然后学生一边学习软件工程课程内容,一边着手收集课程设计所需的有关资料,做好课程设计的准备工作。

课程设计题目所涉及的问题规模和难度应该比较小。因为课程设计不同于毕业设计,加上课程设计安排的时间比较少,学生投入的精力也有限,所以要控制规模和难度。

指导教师在帮助学生选择题目时,可以选择学生比较熟悉的问题,如图书资料管理系统、学生成绩管理系统、人力资源管理系统等等,或者选择学生很快就能熟悉的一些问题。

2摆正程序编写工作在软件工程中的位置

学生在做软件工程课程设计之前,已经做过一些课程设计。比如在学习C、C++或Java之后,利用C、C++或Java所做的课程设计。那些课程设计内容是使用高级语言设计和编写小软件,在那些课程设计中,程序编写是一项非常重要的工作,因为那些课程设计是以熟练应用某高级语言为目的。而在软件工程课程设计中,编写程序工作与需求分析、总体设计和详细设计等工作相比较,重要程度降低了。因为软件工程课程设计不是以熟练运用某高级语言为目的,而是以熟悉和运用软件工程知识为目的。实际上,按照开发软件的过程,当需求分析、总体设计和详细设计等开发过程完成后,用哪种高级语言来实现软件系统已经不是重要问题了。

学生往往认为程序编写工作重要,而认为需求分析、总体设计和详细设计等工作无关紧要,这是没有领会软件工程思想的表现。当确定课程设计题目后,有些学生不认真作需求分析、总体设计和详细设计等工作,匆匆忙忙开始编写程序,这种行为与软件工程课程设计的目的不相符。指导教师要引导学生明确软件工程课程设计的目的,使学生清楚程序编写工作与其他软件开发工作的关系,让学生摆正编写程序工作在软件工程课程设计中的位置;告诉学生不能只重视编写程序工作而轻视其他工作;更不能不经过需求分析、总体设计和详细设计等阶段而直接开始程序编写工作。历史上,软件危机产生的原因之一就是错误地认为开发软件就是编写程序、程序就是软件,而忽视了程序编写之外的其他各项软件开发工作。现在要通过做软件工程课程设计引导学生摆正程序编写工作的位置,用软件工程理论指导实践,防止过去的错误再出现。

3培养整体观念和全局意识

我们培养的计算机专业的本科生,将来不仅仅是做程序员,还要做系统分析师、软件设计师,而系统分析师、软件设计师必须有整体观念和全局意识。开设软件工程课要为培养系统分析师、软件设计师打下基础,而做软件工程课程设计是培养学生整体观念和全局意识的一个好机会。

面对一个被开发的软件系统,如何培养学生的整体观念和全局意识呢?

可以通过制订软件开发计划来培养学生的整体观念和全局意识。在软件工程课程设计开始时,指导教师要按照软件工程的理论要求,指导学生制订一个软件开发计划。对于软件开发过程中的每个阶段,从可行性研究到需求分析,从总体设计到详细设计,从编码到测试,让学生站在整体和全局的角度,考虑和分配各阶段所用时间和各种资源。通过这个计划的制订,训练学生树立从整体出发来思考软件系统开发过程的观念,引导学生学会从全局的角度来合理规划软件开发的各项工作,熟悉软件开发的整体过程。

还可以通过做总体设计来培养学生的整体观念和全局意识。总体设计是软件工程课程设计的一项重要内容,总体设计是在搞清软件系统的需求之后,概括性地回答软件系统如何实现的问题。总体设计从宏观上对软件系统进行设计,将软件系统划分成若干个模块,确定每个模块应实现的功能以及各模块间的结构关系。从总体设计应该完成的任务可以看出,做总体设计必须具有整体观念和全局意识,要考虑到被开发系统的每个方面的问题。指导教师要让学生在规定的时间内做出总体设计方案,然后指导教师对学生做出的总体设计方案进行审查,审查通过之后,再让学生做后面的工作。

4熟悉常用技术和工具

按照软件工程课程设计的要求,学生在课程设计结束时,要完成全部的软件设计开发任务,不但要交出一个能运行的软件,还要交出设计过程中所形成的文档材料,包括需求分析材料、总体设计材料、详细设计材料、测试材料等。要做好这些文档材料,需要在课程设计中引导学生熟悉软件工程中常用技术和工具的使用方法。

例如,在制作需求分析材料时,涉及到实体关系图、数据流图、状态转换图、IPO图的使用;在制作总体设计材料时,涉及到模块化技术和层次结构图的使用;在制作详细设计材料时,涉及到传统流程图、盒图、PAD图、判定表、判定树的使用;在制作测试材料时,涉及到白盒技术、黑盒技术的使用。如果采用面向对象方法进行系统分析和设计,则要涉及到UML中的用例图、类和对象图、顺序图、活动图、协作图、构件图、部署图的使用。

上面提到的一些常用的技术和工具,在软件工程授课过程中,教师虽然讲过,但由于没有真正使用过,所以学生不熟悉。指导教师要引导学生利用课程设计来熟悉这些常用技术和工具。因为学生毕业后,既要会做程序编写工作,也要会做需求分析、总体设计、详细设计、测试等工作,熟悉这些常用技术和工具的使用方法,并且认真完成课程设计各项文档材料的制作,可以为毕业后从事相关的软件开发工作奠定良好的基础。

5学习和运用新知识

软件工程教材中介绍了开发软件各阶段所用的知识,但是教材往往受篇幅所限,对一些新知识介绍得不详细,再加上知识更新的速度比较快,有些新知识教材中可能没有介绍。做软件工程课程设计是一个非常好的学习和运用新知识的机会,指导教师可以有意识地引导学生学习和运用软件工程新知识。

例如敏捷(Agile)软件开发方法,该方法是针对传统软件开发方法过程复杂繁琐、产生并且维护大量文档、缺乏对开发过程中各种变化的有效和及时的反应等问题而提出的一类新的软件开发方法。该类方法对软件生产率高度重视,适用于需求模糊或快速变化的情况,适用于一些小型软件项目的开发。XP(极限编程)是敏捷方法的典型代表,XP将开发过程分为计划、设计、编码和测试四个阶段,XP强调4条核心价值:沟通、反馈、简单、勇气,XP建立了系统比拟、小交付、简洁设计、结对开发、代码共享等多项核心实践准则,XP是应用最多的一种敏捷方法。自从2001年2月敏捷联盟成立之后,敏捷方法发展迅速,该方法的实用价值逐渐被人们所认识,越来越多的人开始应用该方法开发软件。

对于像敏捷方法这样的可以用在软件工程课程设计中的新知识,软件工程任课教师可以通过多种途径将新知识介绍给学生,让学生在做软件工程课程设计之前了解新知识的内容。对于准备采用新知识做软件工程课程设计的学生,指导教师要组织他们深入学习讨论新知识,让他们在做课程设计之前熟悉新知识,指导他们做好根据新知识进行课程设计的计划,鼓励他们使用新知识,拓宽知识面。

6提升综合素质

具有良好的综合素质是事业成功的重要因素,为了提升计算机专业学生的综合素质,为社会提供优秀的软件人才,要充分进行好软件工程课程设计。

能与他人和谐地进行沟通和协作的团队精神,是从事软件开发工作不可缺少的良好素质之一。早期软件作坊式的个体化软件开发方式,造成开发者随心所欲,结果为软件危机的产生埋下了祸根。现在的软件规模比较大,各项性能要求比较高,开发时间比较短,软件作坊的生产方式已经无法适应这种新情况了,因此必须依靠团队的力量,大家齐心合力、分工合作,才能完成软件开发任务。指导教师可以通过设立开发小组的形式,培养学生与他人和谐地进行沟通和协作的团队精神。根据课程设计题目的内容,将参加课程设计的学生划分为若干个开发小组,组内采用民主制组织方式,组内学生通过互相沟通、协商来制订开发方案,通过分工合作来解决开发中的问题。开发小组可以采用敏捷软件开发方法进行课程设计,因为敏捷方法特别强调人与人之间的交流与合作,有利于团队精神的培养。

认真做事、细心做事的负责精神,是从事软件开发工作不可缺少的良好素质之一。软件开发活动由多阶段构成,按顺序分阶段进行开发活动,各阶段密切相关,某一阶段出现错误,将会传导至下一阶段,还会在传导过程中将错误放大。由于开发者马虎大意、出现错误,造成损失的例子历史上很多。指导教师可以通过将一些典型错误实例介绍给学生,引起学生对负责精神的重视;还可以安排时间让学生对设计内容进行自查和互查,以检验认真细心做事的情况。还可以通过测试和调试活动来培养认真做

事、细心做事的负责精神,因为如果没有认真做事、细心做事的负责精神,很难完成测试和调试工作任务。

此外,熟练地写作应用文档材料的能力、勇于创新和勇于改正错误的精神,都是从事软件开发工作应具备的良好素质,这些都可以通过软件工程课程设计活动加以培养。充分利用好软件工程课程设计,对于提升学生综合素质会起到一个很好的推动作用。

参考文献:

[1] Roger S.Pressman.软件工程:实践者的研究方法[M].梅宏,译.北京:机械工业出版社,2002.

[2] 郭宁.软件工程实用教程[M].北京:人民邮电出版社,2006.

[3] 高禹,冯相忠.C语言课程设计与发展学生思维[J].高等理科教育,2006(5):77-79.

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

[5] 陆惠恩.软件工程基础[M].北京:人民邮电出版社,2005:29-80,128-138.

[6] 张敬周,钱乐秋,朱三元.Agile方法研究综述[J].计算机应用与软件,2002(6):1-9,54.

[7] 李航.敏捷软件开发方法与极限编程概述[J].计算机工程与设计,2003(10):116-118,121.

猜你喜欢
软件工程指导课程设计
“苏州园林:景致与情思”课程设计
A Study on the Application of Task—based Approach to English Vocabulary Teaching
依托工作室的软件工程实践教学研究
基于工程教育认证的《软件工程》课程教学质量建设研究 
高中历史“自主导学”模式中的小组合作学习反思
关于如何创新和完善计算机软件工程管理的探讨
关于完善课程设计教学及教学管理工作的思考