软件工程实践教学的实践

时间:2022-07-06 17:30:02  阅读:

摘要:本文提出了应从学生软件工程能力和软件工程素质培养的目标要求进行总体规划,并就软件工程能力要求、软件工程实践教学对环境的特殊要求,以及软件工程实践教学的组织和实施进行了一定的探讨。从实施效果证明其有效性。

关键词:软件工程能力;软件开发过程;实践环境;团队协作

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

文章编号:1672-5913 (2007) 22-0126-03

1引言

软件工程实践教学既指软件工程系列课程的实践教学,也指软件工程专业学生的软件工程能力和软件工程素质培养方面的实践教学。软件工程系列课程的实践教学包括需求分析实践教学、软件设计实践教学、软件实现实践教学、人机交互实践教学、软件测试实践教学等。软件工程的专业实践教学可以分为两部分:程序设计能力培养实践教学和软件工程能力与素质培养实践教学。

程序设计能力、软件工程能力和软件工程素质这三者既具有各自的内涵,又相互联系。程序设计能力包括编程能力和程序设计规划能力。一个不会编程序的人很难体会到编程的艰难,自然难以产生为什么要学习软件工程和运用软件工程知识的欲望。如果一个软件开发人员只能会编程序,不会在软件开发过程中运用软件工程的原理和方法作指导,不会成为一个优秀的软件开发人员。所以培养学生软件工程能力是培养学生软件开发能力的自然延伸。在学生软件工程能力培养过程中,通过软件工程知识的掌握和软件工程知识的运用,来领会软件工程的本质,培养学生软件工程的素质。因此,在软件工程专业学生能力培养过程中,一定要对学生程序设计能力的培养和软件工程能力的培养进行综合规划,既要考虑阶段性,又要考虑软件工程知识和软件工程实践引入的时机,使学生在提高学生程序设计能力培养过程中逐步培养学生软件工程能力,在软件工程能力培养过程中,升华学生软件开发能力,逐步养成良好的软件工程素质。

2004年以来,我们遵循这样一种指导思想,对我校软件工程专业学生的软件工程实践教学进行了一定的探索,取得了一定的效果。

2软件工程实践能力培养规划

软件工程能力培养不是靠一两门课程来达到的,它同样是一项系统工程,需要周密计划,稳步实施。我们的基本策略是由浅入深,步步提高,通过加大编程的量来提高编程的难度,在难度中寻求降低难度的方法,适时引入软件工程的原理和方法,并通过“项目”和“团队”软件开发来加深对软件工程的认识,从中领悟软件工程的内涵。

我们对软件工程专业学生的能力培养进行了四年规划:第一学年解决基本的程序设计问题,使学生能够编写并调试出150行源代码程序。第二学年基本解决程序设计问题,能够用面向对象程序设计语言,按照基本的软件开发过程开发出一个功能齐全的单机应用程序,并具有一定实用性。基本能够编写出从软件计划到软件确认测试的全部文档,包括技术文档和过程管理文档。第三年全面学习软件工程的知识,并按照软件工程过程开发出基于B/S模式的网络应用软件。第四年通过课程设计和毕业设计进一步加强程序设计能力和软件工程知识应用能力的培养。

3软件工程实践能力培养实施

基本的程序设计能力培养可以通过课程实验和基本的课程设计来实施。在能力培养规划中,我们用高级语言程序设计、数据结构和面向对象程序设计课程来完成。而对于软件工程能力培养需要特定的环境和过程。

3.1软件工程基本能力

软件工程基本能力包括:

(1) 软件工程过程能力。无论采用何种软件生存周期模型,都可以把一个开发周期分成若干个具有里程碑的阶段。每个阶段都有明确的输入和输出,输出必须通过文档的形式进行完整描述,而且其输出是可验证的。对于学生而言,要培养软件过程能力,必须经历一个从任务接收到交出软件的完整过程。并且知道每个阶段的任务是什么,需要编写那些文档,每个阶段任务完成的标志是什么。

(2) 文档编写能力。软件工程过程的每个阶段都以文档作为输入,也以文档作为输出。在软件开发过程中,编写文档的时间要比编写程序代码的时间长得多。学生必须具备文档编写的能力,即每个阶段应有那些文档,文档的内容、格式、文档描述语言(文档核心内容的描述工具,如图形符号、表格等),会使用文档描述语言有针对性地描述应用实例。

(3) 团队协作能力。团队协作能力在软件工程能力中是最核心的能力。一个软件项目不可能由一个人从头到尾独立完成,需要多人合作完成。一个软件项目组的团结协作能力如何,将直接影响着软件项目的进度、效率和质量。

软件工程的实质是在规定的时间和成本范围内开发出用户可接受的软件产品。在学生软件工程能力培养过程中,虽然没有软件成本的约束,但可以规定时间约束和质量保证措施。因此,软件工程能力培养必须在特定的环境下进行,否则这种能力培养达不到应有的效果。

3.2软件工程能力培养环境

根据对软件工程能力培养的要求,我们将软件工程能力培养的环境设定为:

(1) 选定合适的软件项目。该软件项目必须来自现实社会,具有真实感,避免学生作业性质的题目。完成项目所需的软件开发工作量符合教学要求,能够在规定的时间范围内完成,但学生必须通过紧张的工作才能完成,不能很轻松地完成。

(2) 学生必须按照一定的组队原则组成项目组。项目组内按软件开发阶段和任务划分设置若干个岗位,分工明确、各负其责,又互相协作。

(3) 文档有规定的模版。文档必须有一定的格式和内容要求。文档的模板体现文档的规范性,避免文档的随意性。

(4) 学生必须按照软件公司的工作方式进行正常的上下班制。使学生真正体验一个真正的软件公司是如何开展工作的。

没有上述环境,软件工程过程能力和团队协作能力很难体现出来。在一般的学校实验室环境下,难以构造这样的环境。

3.3软件工程实践能力培养实施

根据调研,我们选择四川某信息技术实训公司作为实习基地。该公司是原拓普公司下属软件公司,通过了CMM三级认证,形成了规范化的软件开发流程和规范化的软件过程管理机制,具有进行软件人才培训的坚实基础,2003年以来,该公司以原四川托普公司的软件项目资源为素材,经过提炼后作为实训项目,为软件企业提供软件人才培训服务。该公司提供的软件人才培训服务与我们所期望的软件工程能力和素质培养具有很大的吻合性,但与我们对学生的培养目标要求又有一定的差距,主要表现在:

(1) 项目组的组织。该公司将实训学生划分成一个一个的项目组,按照软件项目开发的组织形式进行组织和管理,这是值得肯定的一面。但每个组至少15人,有的甚至多达20人。对于在校大学生,要从这些学生中挑选一个项目经理,要对每个人设置不同的岗位,把岗位和职责紧密结合起来,达到相互协调和配合,是很困难的,可能造成一部分学生没事干或干事太少,达不到培训的目的,这也不太符合软件工程原理中相关项目组组成对人数的要求,最好遵循7±2的原理。经过协商,项目组以7~9人为宜。人太多,组织和协调困难;人太少,要在规定的时间内实现规定的项目开发任务同样有困难。后来的实践证明,这样的分组,在项目中每个实训的学生都有明确的职责和任务,工作量非常饱满,任何一个学生不努力或不配合,都可能导致任务完成得迟后。对7个学生的项目组与9个人的项目组相比,其进度有明显的差异。

(2) 软件开发过程的划分。在学生实训过程中不太注意过程的管理,一个项目任务书下达后,只进行最后的验收,没有明显的里程碑阶段划分。而学生的软件工程能力最重要的是体现在软件工程过程的组织、管理和控制的能力,必须具有里程碑阶段的划分,通过里程碑阶段任务结束、阶段成果审查和验收等环节来体现软件工程过程管理对于软件质量保证的重要性,使学生明白软件质量不是通过测试来保证的,而是通过确保软件工程过程每一步的质量来保证,软件需求分析和设计是软件质量保证的最关键步骤。因此在实训过程中,里程碑阶段的划分和阶段成果验收是保证学生软件工程实训质量的基础。通过相互协商,我们把软件开发过程分成三个里程碑阶段:需求分析阶段、概要设计阶段和最后验收阶段。每个阶段结束后都应有关键性的阶段报告,并且对阶段成果要进行讨论和评审,基本通过后才能进行下一阶段的工作。通过软件过程的管理让学生真正知道软件工程的本质是什么。

(3) 软件工程能力培训的步骤。公司原来只考虑对学生进行1次培训,安排在大三结束时。我们认为,软件工程能力和素质的培养需要一个比较长的时间,靠非常短暂的时间来达到培养的目标是不现实的。所以我们计划进行两次软件工程实训。第四学期安排2个学分的软件工程课程学习,期末组织第一次软件工程实习,实训题目是“综合程序设计与软件工程初步实习”,即在学生具备一定程序设计能力基础上,以综合程序设计为内容,通过引入软件工程知识和软件开发过程管理,让学生体会真正的软件开发是怎么回事。尽管学生对按软件工程要求进行软件开发还很不习惯,但通过这样一个过程使他们认识到软件开发不是只写代码,必须按照一定的过程和规范一步一步地进行,否则不能达到预想的目标。在第三学年引入更多的软件工程类课程,学习更多的软件工程知识,再进行第二次软件工程实习,使学生更自觉地运用软件工程的知识进行软件开发的尝试。

3.3实施效果

通过对2004、2005、2006、2007年暑假的软件工程实习的跟踪,带队老师与实训公司的不断交流与协商,公司按照实习的上述相关要求和规范的软件开发过程组织实习,达到了预期的效果。主要表现为:

(1) 使学生深深认识到软件开发并不只是编程序。我们每次安排实习时间4周,其中在学校准备1周,给学生补充一些在实习过程中可能要用到的知识;在实训公司实习两周,第四周进一步完善在公司的实习内容。在公司的实习的两周共10个工作日中,理论和规范讲解1天,软件计划、需求分析和总体设计一般需要4~5天,编码和测试3~4天,验收1天。由于我们在学生入学后的头两个年狠抓了学生的程序设计能力训练,学生编程基础好,程序设计已不是大问题,所以重点放在软件开发的规划、需求分析和方案设计方面。最后验收的讲评重点也放在需求分析和设计方面暴露的问题(一般列出的功能要求都能实现)。由于学生非常看重讲评的结论和效果,这样的讲评能对学生理解软件工程收到很好的效果。

(2) 对团队协同合作有了深刻的认识。对任何一个项目组,如果同学之间不能很好地协调合作,不仅能影响进度,而且影响软件质量。在时间受限的情况下,同学之间会主动协调相互之间的关系。如果有同学不能很好地与他人合作,项目组会主动进行解决。曾经有同学不习惯且不愿意与项目组协调,项目组同学要求从项目组开除该学生。最后该同学认识到协同合作的重要性,表示愿意积极配合。在学生实习总结中认识最深刻的就是团队协作的重要性。

(3) 对软件过程管理有了深刻的认识。软件过程管理对软件质量的影响是显而易见的,在课堂上重复10遍也不会收到好的效果。但通过阶段验收和最后验收和评审,把验收质量与项目组的成绩及成绩分布挂起钩来,特别是最后的规范化的验收,软件过程管理中出现的问题就会暴露出来。曾经有一个组在软件开发过程中各方面的工作都作得很好,但在最后验收过程中,因软件版本拷贝出了问题,软件演示的程序不是最终版本,而是一个中间版本,出了部分质量上的问题,最后的验收结论是“原则通过”,分配各种档次成绩的比例明显偏低。验收后,该组学生集体抱团痛哭一场。此情此景足以说明软件过程管理的重要性,任何一个环节不按规范办事,都会出现意想不到的问题。

4结束语

软件工程能力和软件工程素质培养是软件工程专业学生培养目标的基本要求。软件工程能力培养和软件工程素质培养所需要的实践环境与一般的课程实验或课程设计相比,具有其特殊性。如何构造实践环境,让学生在环境中去感受和体会软件工程的内涵,具有重要的意义。软件工程实践在时间受限、项目组规模恰当和管理规范的条件下,可以得到更好的效果。

作者简介

周荣辉(1953-),西南交通大学信息科学与技术学院教授,长期参与计算机科学与技术和软件工程专业建设。

推荐访问:实践 软件工程 教学

版权所有:汇朗范文网 2010-2024 未经授权禁止复制或建立镜像[汇朗范文网]所有资源完全免费共享

Powered by 汇朗范文网 © All Rights Reserved.。鲁ICP备12023014号