首页 理论教育 软件工程专业软件工程实践课程改革与教学实践探索

软件工程专业软件工程实践课程改革与教学实践探索

时间:2022-03-05 理论教育 版权反馈
【摘要】:软件工程实践是软件工程专业必修课程,因此,如何组织好软件工程实践的教学环节、实验环节对于培养新型的合格的软件人才具有十分重要的意义。软件工程实践课程是软件工程专业的基础课程,它是一门旨在将软件工程各主要领域知识进行融会贯通和综合实践的课程。

软件工程专业软件工程实践课程改革与教学实践探索

谢 波[1] 厉小军[2]

(浙江工商大学计算机与信息工程学院)

摘 要:软件工程实践课程是大学软件工程专业的重要基础课程。本文首先结合国际国内软件工程专业教育规范分析了软件工程实践课程的教学与实践现状,然后有效融合理论、技术与实践方法,分别从教学过程模式、实践的层次结构、过程考核管理等方面入手,较为全面地探讨了软件工程实践课程的教学内容组织和实践活动改革,最后提出了以实践过程改进为目标的课程改革展望。

关键词:软件工程实践;开源软件;教学改革

软件工程实践是软件工程专业必修课程,因此,如何组织好软件工程实践的教学环节、实验环节对于培养新型的合格的软件人才具有十分重要的意义。实践类课程教学出现的新老问题更加凸显,需要探讨并提出解决问题的途径和办法。本文提出了分析和改革的方案。

一、课程性质与目标

图1 软件工程实践的课程目标

软件工程实践课程是软件工程专业的基础课程,它是一门旨在将软件工程各主要领域知识进行融会贯通和综合实践的课程。由此,它的课程性质在于综合性、实践性和工程性三方面。综合性表现在它集软件工程各门专业基础课为一个整体,要求学生在初步掌握软件开发技术、软件需求工程、软件工程方法、软件项目管理和软件质量与测试等软件工程主要几个方面的领域知识后,将所学领域知识融会贯通,深入理解、强化和应用;实践性是指领域知识的强化必须在实施高强度的、近可能真实的、具体完整的软件项目开发实践中得以实现,从具体的实践活动中得到软件开发经验;工程性表现在课程所实施的实践活动必须由一个团队在一个较长时间周期内进行协作活动,从而完成一项具有既定目标的任务。

在学完软件工程实践课程后,学生可在7个方面强化理论知识,积累实践经验。如图1所示,课程培养学生具备初步软件项目管理的技能和经验,在软件项目范围、进度、成本等方面进行管理实践;以此为核心,具备软件系统的设计与分析能力,并能使用软件开发技术将系统设计转化为软件系统实现;在这一系列过程中掌握业界主流的管理、设计、分析和开发测试工具软件;伴随着软件开发过程,学习者还须掌握各类软件工程专业文档的写作规范;增强工程团队中的人员的分工与协作能力;培养与各类工程客户的沟通能力。

二、实践类课程的教学现状

(一)信息专业实践类课程教学现状

信息专业的实践类课程教学目前在知识结构、团队组织、实践环境、成果审计和成绩考核五个方面呈现出一些弊端和不足,如图2所示。在知识结构方面,课堂所学理论知识不能满足实践课程所需的日益增进知识结构。由于信息技术更新迅速,实际的实验项目所需的知识结构往往与先修课程知识有脱节现象。在团队组织方面,由于班级中的学生资质有所差别,随意的团队组织会造成优质资源和劣质资源的扎堆现象,从而使工程性实践活动的团队组织失调,造成资源失衡,团队无法完成实践活动。在实践环境方面,由于工程性实践需要一个持续过程,而现有的实验环境大多只能维持短期实验。为了维系持续实践活动,学生每次实验前必须花大量时间搭建前次实验完成后的实验环境,重复活动将浪费大量的时间。在成果审计方面,信息专业的实践成果往往很难进行定量评定,现有的教学框架中缺乏一个完善的实践成果评价体系。最后,在业绩考核方面,由于实践成果是团队成员共同的结果,因此如何考核个人与团队的业绩也是一个空白。

图2 实践类课程教学现状

(二)软件工程实践课程实践现状

信息专业实践类课程有着以上五方面的弊端和不足,软件工程实践课程有着上述所介绍的性质和目标,因此软件工程实践课程有着自己独特的现状。目前软件工程实践课程有着以下四大突出的问题,如图3所示。首先,软件工程实践所需的先修知识结构与软件开发的工业现状脱节严重,课堂的理论教学无法适应日新月异的软件研发技术的发展,在课堂理论教学的知识结构与实践活动所需的知识结构之间有一定的距离,使得学生不能适用当前软件研发的需要。其次,业界的软件研发需要全方位的工程性支撑工具软件的广泛使用,而这些软件工程支撑工具软件是学生在以往课堂教学所没有学到的。再者,软件工程实践活动所需的项目案例需要具备综合性和自然性等要求,而以往的项目案例考察内容单一,真实感较差,学生无法在分析、设计和开发中学习和感受到真正的工程体验。最后,案例项目的自然性还体现在实践参与人的双重身份上,实践活动主体不仅要扮演软件生产者的角色,还必须扮演软件需求者和审核者的角色,这样才能从多方面掌握软件工程的各项领域知识。

图3 软件工程实践课程实践教学现状

三、课程教学设计

(一)大班教学小班实践的过程模式

为了提高教学效率和质量,充分利用优质教学资源,增强师生间的教学互动,培养学生自主学习的能力,软件工程实践课程采用了大班教学小班实践的过程模式。该模式对理论教学和实践讨论在教学方式、小组交流与合作、实践指导和考评体系等方面进行了强化和扩展。制定出一套适合于软件工程专业学生的最佳实践方案,其目的旨在学生掌握了必要的软件设计、开发技术和软件工程各阶段理论知识后,以开源软件为开发和管理工具,以团队合作为组织形式,真实地模拟软件工程项目从需求分析到软件发布的完整过程。

学生在大班教学阶段,以两个自然班为授课单位,以优质师资为授课教师,将全面学习目前现有软件企业在实际软件项目开发中所使用的项目开发和管理技术,以及业界普遍使用的软件工程支撑工具软件。在小班讨论阶段,将单个自然班分成4-5人的小组,以小组为实践讨论单位,将这些知识融入在实际的软件项目管理与开发中。以开源软件工程工具和开源软件组件的学习和使用为基础,从真实软件工程项目的需求分析、概要设计、详细设计、编码实现、软件测试至最后的软件发布,该过程模式将以理论教学促进讨论,以讨论促进实践,从实践中真正学到软件工程业界的理论与方法,为日后从事软件工程专业的工作岗位打下基础,与软件工程企业的标准接轨。

在大班教学的理论授课阶段,软件工程实践组织了覆盖软件工程业界各主要领域的教学授课方案,如图4所示。它涵盖了软件开发技术、软件开发过程与工具、软件设计与开发标准化文档写作等三大类共16个方面的技术内容。

图4 大班理论教学授课方案

(二)基于开源软件的软件工程实践体系

软件工程实践课程的实践教学,旨在让学生在完成软件工程专业主要理论基础课后,以开源软件(OSS)为基础,将课堂所学的理论知识,通过各项开源软件工程(OSSE)工具的实践得以更深入地理解、强化和应用。要求学生通过此阶段的学习,初步掌握各项OSSE工具在软件产品开发各个主要环节的使用方法,进而使用OSSE工具结合各类开源软件组件(OSSC)主持或参与开源软件应用的开发(OSSA)。软件工程实践课程的实践活动,按照学生理论知识和程序设计能力的掌握情况,逐级分为五个层次。

1.掌握各项OSSE工具在软件产品开发各阶段的应用,分析并比较它们的特点、性能和可行性等,整理出一套适合实践开发的OSSE工具体系。初步掌握各主要OSSC的特点、安装和使用方法。OSSE工具如图5所示。

图5 OSSE工具

2.使用OSSE工具体系参与一项开源软件项目,分析该项目的开发过程和OSSE工具的使用,通过各类文档的阅读,选定一个或若干个子项目进行开发。

3.从需求分析开始,学习和掌握相关OSSC的应用和集成,使用OSSE工具体系主持一项开源软件项目。

4.深入理解软件工程某环节的理论知识,在学习若干OSSE工具开源项目的基础上,参与一项OSSE工具开发开源项目。

5.深入理解软件工程某环节的理论知识,从需求开始,使用OSSE工具体系结合设计模式理论,主持一项OSSE工具开发开源项目。

图6 软件工程开源实践体系结构

软件工程开源实践体系结构如图6所示,由软件开发技术、软件工程主要理论知识体系、Sourceforge &OpenSource等开源项目组织、Tigris.org等OSSE开源项目组织和开源软件组件组成外围资源,从学习OSSE工具和OSSC开始,从理论验证和软件设计两个方面逐渐加强,形成五个层次,难度从易到难的实践活动。

(三)基于过程的考核管理

根据以上提出的软件工程开源实践体系框架,软件工程实践的实验体系由基础实验、综合实验和可选实验三部分,以及配套的实验考核体制组成。其中,基础实验均选自第一层次的实验项目,按照该层次项目的实用性、综合性及难易程度等因素赋予每个基础实验相应的难度系数;综合实验选自第二和第三层次的实验项目;可选实验选自第四和第五层次的实验项目,综合实验和可选实验成绩将根据项目的难易程度赋予相应的难度系数。以下是具体的考核原则。

1.基础和综合实验为必选实验。

2.基础实验和综合实验成绩分别占总成绩的40%和60%。

3.若基础实验成绩不合格,则总成绩不合格。

4.可选实验成绩根据其完成程度,对总分给予加分。

5.以上成绩均以百分制考核。

6.基础实验以个人所提交的基础实验文档分Bds和随机报告为考核依据,被现场随机抽到学生将进行陈述演示报告,并获得报告系数Ps,基础实验分最终为基础实验文档分乘以报告系数。

7.综合实验以小组综合实验成绩、个人贡献排名以及现场答辩表现为考核依据,由组长给出各组员对项目开发的贡献排名Rn;根据综合实验答辩情况由考核委员会给出小组综合实验分Cgs以及各组员的主观系数K n,各组员成绩按照综合实验分、贡献排名以及主观系数按照公式Csn=Cgs-(Rn-1)·K n递减获得,如图7所示。

8.若小组末几位有不合格者,其成绩由考核委员会复议;若小组平均成绩不合格,则组长位于排名末尾,其余组员排名递增一位。

图7 实践教学考核方案

四、课程教学改革实践

(一)团队组织

工程性的一个突出特点就是团队性,团队人员组织的合理性是工程性实践项目成败的关键。针对前述章节介绍的实践团队组织存在的优质和劣质人力资源扎堆现象,本课程采用了种子组员和队俑组员的组织方式。所谓种子组员是指一个自然班中理论和实践动手能力较强的学生,班级种子比是指种子组员人数与自然班总人数之比数;所谓队俑组员是指一个自然班中理论和实践动手能力较差的学生,班级队俑比是指队俑组员人数与自然班总人数之比数。基于种子和队俑的团队组织方式有以下原则。

1.任一个团队中种子组员人数与团队总人数之比不能大于班级种子比。

2.任一个团队中队俑组员人数与团队总人数之比不能大于班级队俑比。

3.在满足原则1和2条件下,尽量将种子组员和队俑组员搭配组队。

基于种子和队俑的团队组织方式能有效地避免优质和劣质人力资源扎堆,最大程度保证每个团队都具备一定的项目开发能力,促成团队内部的相互学习、合理分工和交互协作,从而有利于每个队员都能从实践项目中补充自己所需。

(二)教学辅助工具软件

工程性的另一个突出的特点就是持续性,软件工程实践课程需要维系一个长约16周的实践过程,这一实践过程需要实施管理来提高效率。本课程采用教学辅助支撑工具软件来帮助教师实施实践过程管理。支撑工具软件包括三个方面,分别为教学过程管理工具、软件开发环境支撑工具和演示辅助工具,如图8所示。

教学过程管理工具以业界著名的开源教学课件管理软件Moodle为平台,在其上发布教学与实践项目案例资源和任务,进行团队组织,学生上交实践成果等教学活动。同时配合教师自己编写的Excel和Word宏程序,随机选择组员进行项目案例选择、陈述演示报告等实践活动。软件开发环境支撑工具是指软件工程开发所必备的开发环境,包括源代码版本管理和配置管理环境SVN,为保证学生获得便携式、持续性开发环境所使用的VMware虚拟机,为项目实践提供文件存取服务的FTP Server服务软件等。演示辅助工具包括学生在陈述、演示和报告过程中所需要的动态过程屏幕录制软件Wink和静态瞬时屏幕截屏软件HyperSnap等。

图8 教学辅助工具软件

(三)工程角色扮演

工程性项目实践不仅要求实践主体充当项目生产者的角色,还必须从项目需求者和评审者的角度审视项目,以项目需求方的视角指导项目开发,从而保证项目达到预定的目标,因此软件工程实践要求学生在项目实践过程中扮演项目生产者和需求者两种角色。

在项目开发的阶段性任务实施期间,团队成员充当项目的开发者,进行项目的分析、设计和开发,由教师充当项目的需求者和审核者;在阶段性任务的成果期,由其他团队成员充当项目的需求者和评审专家,举行该项目阶段性成果的评审会,由开发主体队员陈述有关阶段性成果的设计、分析和开发过程,其他团队成员就该队员的陈述进行提问和点评。工程角色扮演有利于学生通过不同的视角学习和积累工程实践经验,同时还能有效地激发学生陈述和评论的积极性。

(四)现场随机陈述

在实践活动的各个阶段性成果期,课程都要举行专家评审会,由项目团队陈述实践过程,演示实践成果,由其余团队扮演专家进行提问和点评。但由于自然班的团队数量较多,课程的陈述讨论课时不能满足每个团队都进行陈述演示活动,因此课程采用现场随机陈述方法解决时间限制问题。在陈述演示活动的前次课时期间,教师要求每个团队充分做好陈述演示的准备工作,在陈述演示活动课时前,教师使用工具软件现场随机抽取团队进行陈述和演示。现场随机陈述既能节省陈述演示的时间,又能起到督促每个团队学生进行认真准备的作用。

五、总结与展望

软件工程实践课程通过大班教学小班实践的过程模式充分地利用了优质师资资源,大班理论教学活动能有效缩短工业界所需知识结构与先修理论知识之间的距离,小班实践活动能培养学生自主学习和分析问题的能力。课程通过实施基于开源软件的软件工程实践体系,使得各个能力层次的学生能有针对性地开展实践活动,提高项目实践的效率。课程通过开展一系列改革举措,解决或缓解了信息专业实践类课程的一些不足。通过基于过程的考核方案,解决团队业绩与个人业绩之间关系的问题;通过基于种子组员和队俑组员的团队组织方案,解决了人员团队组织资源失衡的问题;通过使用各类教学与实践开发环境辅助工具软件,提高了教学和实践过程管理的效率;通过现场随机抽取陈述的方法,既督促了所有项目团队认真准备陈述演示活动,又有效解决了实践陈述演示课时少与项目团队数量多之间的矛盾。

软件工程实践课程今后将进一步增进工程角色模拟,将单一项目案例开发的各个阶段由各项目团队轮岗负责。开发能支持全程项目实践管理的支撑平台软件,提高教学实践管理的效率。将软件过程改进的原理和方法转化为实践过程改进方法并将其应用到课程教学中,通过建立涵盖项目需求、团队组成、考评制度、激励制度等内容的实践过程库,根据团队的人员组成、实践需求等客观因素,在实践过程库中选取最佳实践,使学生个体的实践能力,转化为团队的实践能力,从而提高课程的教学实践质量。

参考文献

[1]骆斌,赵志宏,邵栋.软件工程专业工程化实践教学体系的构建与实施[J].计算机教育,2005 (4).

[2]李丹程,李哲洙,石凯,等.软件学院案例式教学方法的探索与实践[G].全国高校软件工程专业教育年会论文集,2007.

[3]郝水侠.软件工程的教学模式及方法的探索[J].科技创新导报,2009(1).

[4]Toth K.Experiences with Open Source Software Engineering Tools[J],IEEE Soft Ware,2006.

[5]Carrington D.,Kim S.K,Teaching Software Design With Open Source Software[J],33rd ASEE/IEEE Frontiers in Education Conference,2003.

【注释】

[1]谢波,博士,讲师,研究方向为软件测试、软件过程、情感计算。

[2]厉小军,博士,教授,研究方向为企业信息管理、软件工程。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈