专题教学方法在软件工程实践教学中的应用案例
引 言
随着计算机技术在各专业领域的广泛应用,软件工程成为软件分析、设计、测试、维护和管理等的核心课程。该课程的学科交叉性、工程性及领域相关性等带来的复杂性使得其教学需采取循序渐进、多层次的模式。本科层次主要培养软件工程的基础知识和基本实践能力;研究生层次主要培养软件工程理论基础、技术和方法[1],其中学术型硕士专注于理论创新的培养,工程型硕士专注于技术和方法应用的培养。对于工程应用型的计算机专业硕士而言,软件工程课程的培养目标是在本科层次教育的基础上,一方面从软件开发方法和技术上着重于学生软件分析、设计、构造、实施及维护等能力的培养和提升,另一方面从软件工程组织和管理上着重于学生工程能力的培养和提升。因此,在加深理论教学的同时,加强实践教学是计算机专业硕士软件工程课程教学的核心内容。
1 计算机专业硕士软件工程实践教学现状
当前计算机专业硕士软件工程实践教学主要存在以下问题。
(1)实践教学体系偏向粗放型[2]。实践教学主要采取基于项目的分组实践模式,即课堂授课结束后,学生自由组队形成项目组,选择一个软件项目来完成后提交给教师检查,这种模式缺乏针对软件生命周期各阶段的实践训练,未能实现分析、设计、构造、实☢施及维护等软件工程各阶段的精细锻炼和培养。
(2)教学模式不能满足学生个性需求。随着专业学位硕士的扩招,来自不同本科院校的计算机专业硕士生软件工程实践能力水平参差不齐,有的学生已经接受过较多的软件项目实践训练,具备较好的实践基础,而有的较少或几乎没有参与过软件项目实践,实践基础薄弱。目前的实践教学模式未能针对各种层次学生的实际情况,因材施教,使每个学生能在自己原有的实践基础上有更大的提高。
(3)实践教学过程管理及考核模式不完善。当前实践教学过程教师参与度较低,未能对实践过程进行合理的跟踪和引导,实践过程经常变成由项目组核心的一两个成员完成整个项目,而其他成员参与较少。教学考核模式未能针对学生的方法、技术、实践能力及工程组织和管理能力对学生进行精准的评定。
2 基于专题的软件工程实践教学
专题教学[2-3]是根据教学目的和重点内容,将教学内容归纳成若干个专题,然后围绕每个专题展开深入分析和讲解的一种教学方式,适合内容繁杂、知识点多的文科类课程及已经具备本科专业基础的研究生的课程教学。与传统按章节体系顺序教学的扁平模式相比,专题教学以教学重点内容为核心,围绕核心内容深入透彻地展开,属于精讲、集约型[2]的纵深模式教学。结合软件工程知识体[4](SWEBOK)及计算机专业硕士培养目标,软件工程实践教学划分为7个专题:软件需求分析实践、软件设计实践、软件测试实践、软件过程实践、软件质量实践、软件管理实践、软件综合实践。在教学学时较充分的情况下,将教学内容较多的专题进一步划分为子专题,尽量提高教学的精细度。专题教学模式ย要求每个专题的教学目标明确,教学具体内容和安排设计准确,根据不同教学内容特点,采取多元化教学模式,达到精益求精的效果。
3 基于专题的软件工程实践教学案例设计
精准需求分析是软件开发成功的核心环节,在众多需求分析方法中,原型法在實践中是最为有效的一种需求分析[5-6]方法。与瀑布模型等其他方法相比,原型法可以有效解决用户需求不明或变更而造成的开发效率低下、失败及成本增加等问题,是需求工程开展的最佳实践方法之一,因此在软件需求分析实践专题中,该方法需要精讲,使学生理解透彻并能熟练应用。以原型法需求分析实践子专题为例说明基于原型法的需求分析专题实践教学方案的详细设计。
3.1 教学目标
软件需求分析实践教学专题原型法需求分析实践子专题的教学目标:①学生既能够掌握该方法的原理及运用,又能够熟悉需求分析的全过程;②学生能够领会该方法与其他需求分析方法的异同点、优缺点,发现应用该方法的关键环节及注意事项;③学生在专题实践中锻炼以下工程实践能力:用户沟通和引导能力,团队协作能力,人际沟通、交流能力,产品业务分析能力、需求文档撰写能力,经验交流分享能力,问✯题质疑和解决能力,产品观察发现及开发能力,智能思维和创新能力等。
3.2 内容和安排
基于原型法的需求分析方法实践教学方案总体设计思路如图1所示,包括组队、选题、原型法需求调研、撰写需求规格说明书、总结及评价6个实践环节,其中原型法需求调研又包含快速用户调研、构造试用原型界面系统及运行修改原型界面系统3个子环节。
3.2.1 组队
学生根据兴趣、爱好等自由组队,3~5人组成一队共同完成一个选题,每组推选1个组长全面负责和协调各项活动开展,小组设定项目经理、需求分析师、业务评审员等角色,并在项目推进过程中进行角色轮换,使每个学生都尽量尝试不同角色,获得相应锻炼和体验。通过团队合作,培养学生的协作能力、交流和沟通等工程能力。为了使需求分析实践能够正确、顺利、有效地开展,指导教师选定1个小组,对该组的各项实践活动进行示范和指导。教师未参与的其他小组的组长需先参与到教师示范小组中进行观摩。示范小组的各项实践活动都比其他小组先开展,其他小组的相应活动在组长观摩完毕后开展,示范小组在各项实践活动中产生的文档及原型界面系统作为各小组的示范模版。
3.2.2 选题
选题由学生自主进行。教师在该环节的任务是进行选题引导和质量审核,这样有利于满足学生的兴趣、爱好等自身需求以激发学习兴趣,也为学生后续阶段的研究和创新活动准备一些基础题目,教师仅需对选题进行质量把控。选题内容原则上要和学生的学习和生活相关,这样不仅可以减少学生在了解专业领域知识上所花费的时间,还可以培养学生的产品挖掘能力、智能思维能力及创新能力等。教师通过设置在你的学习、研究和生活中(可以分为学校以内和学校以外)你发现哪个方面还不够便利,需要做一个软件来帮助提高效率?在你目前常用的软件中你发现哪个软件做得不够好,需要做一个更好的?在你的兴趣爱好里,有没有可能做一个软件使其相关处理变得更便捷或完美?等相关问题引导和启发学生选题。学生初步选题后,为了保证选题质量,要写一个简单的选题报告,说明选题目的、意义和主要功能并提交给指导教师。教师根据选题报告确定选题是否通过,对过于复杂或简单、意义欠缺等不合理的选题,教师和学生讨论后进行修改或更换题目。选定的题目称为项目,用户主要为学校某个部门的管理人员、教师、同学等。
3.2.3 需求调研
基于原型的需求调研与瀑布模型不同,调研结果不是一次形成,而是渐进、增量式形成。该方法首先通过快速用户调研获取项目基本需求,然后根据基本需求构造具有用户交互性能的试用原型界面系统,最后通过用户运行试用原型界面系统,修改和补充基本需求和试用原型界面系统,最终得到满足用户需求的完整的原型界面系统。用户需求获取迭代过程与敏捷开发需求获取过程相似。基于原型的需求调研实践活动,要求学生不仅要掌握该方法的实施过程,还要理解该方法与瀑布模型等其他方法的异同点和优缺点,实践结束后教师要在总结环节中引导学生展开讨论。
(1)快速用户调研。本阶段的任务不考虑用户次要需求,先获取项目核心需求,目的是能尽快开始构造原型界面系统。开始时要求各小组成员共同编制基本需求调研计划,包括系统主要用户、业务文档收集、核心问题调查问题表和调查方式等内容。基本需求调研计划完成后需提交指导教师审查,教师对不合理之处和学生一起讨论修改和完善。基本需求调研计划确定后,按计划开展调研。初始调研主要是为了获得一个原始需求的轮廓,因此仅需针对主要用户展开调研,选取其核心需求。初始调研的方法是先收集用户的纸质资料或电子文档资料并进行分析,从中获取用户关键业务流及输入和输出数据流,然后通过与用户交谈、向用户群体发放调查问卷等方式完成核心问题调查问题表,快速确定业务主体流程及其输入和输出数据流。
(2)构造试用系统原型。本阶段的任务是根据用户的基本需求尽快建立一个能运行的交互式界面原型应用系统。系统特点是:①具有完整的基础数据;②具有可导航性、人机交互的动态效果 ;③仅有展示系统基本功能的界面,不需要实现系統功能。构造系统原型实践要求学生学会应用建模工具Axure[7]来完成。本阶段要求项目组能够将用户需求转换成系统原型界面,可以锻炼学生的需求建模、项目分工协作等工程能力。
(3)运行、修改系统原型。本阶段的任务是将系统试用原型交给用户并指导其试用,引导用户对原型提出补充和修改意见。这个阶段是开发人员与用户沟通最为频繁的阶段,是发现问题和解决问题的重要阶段。用户在计算机上运行和试用原型系统得到亲身感受并受到启发,通过反映和评价向开发者提供反馈,细化和明确系统各项功能需求和性能需求。这个阶段要求分析员与用户要建立良好的合作关系,可以锻炼学生的人际沟通和交流能力。在实践中需要学生灵活应用多种调查方法,如与用户交谈、ซ向用户提问题、向用户群体发调查问卷、参观用户的工作流程、观察用户的操作和听取同行专家意见等。在用户确实不能明确真正需求的情况下,学生还需要通过分析已经存在的同类软件产品、行业标准及规则等,对用户进行有效的需求引导,从而提取需求修改意见。项目组根据用户的意见对原型加以改进和完善,通过原型构造试用运行评价反馈分析修改的多次循环,系统试用原型逐步演变为系统正式原型。
3.2.4 撰写需求规格说明书
本阶段的任务是根据正式原型界面系统撰写需求规格说明书,作为用户和项目组共同确认的需求(需求合同)。根据和用户确定的正式原型界面系统,各项目组按照老师给出的模板撰写项目需求规格说明书,经项目组内部审查、修改并确认后,请用户评审此需求规格说明报告。项目组再根据用户评审进一步修改和完善项目需求规格说明报告,以确保报告内容准确完整地表达用户需求,最后形成需求规格说明书正式版。本阶段主要是锻炼学生需求规格说明书编写能力。
3.2.5 总结
项目完成后开展实践活动总结有利于学生交流和分享成功经验,发现不足,提出改进方法,获得实践及理论认识的提升。总结由教师组织开展,形式可以是课堂集体或小组讨论、做总结报告等。教师的主要任务是指出各环节指导和跟踪所发现的不足之处,如选题意义、用户沟通方式、小组协作、用户数据和业务分析整理、建模工具Axure应用、原型界面系统构建修改迭代次数控制等关键环节的不足,引导学生思考和讨论,总结并提出改进方法。学生则要在教师组织下,分享某个实践环节的体会✔和收获,如Axure原型界面开发技巧、不同类型用户沟通方式体会、项目小组成员合作经验分享等;或对某个问题提出疑问,如如何减少原型界面系统构建迭代次数如何引导用户明白自己的真正需求如何发现数据流缺漏等,引发其他同学共同讨论和分享,找出解决方案。通过教师总结和学生总结,学生进一步加深对需求分析各项活动的认识,促进实践水平的提高。
3.2.6 考核
课程考核采取综合评定方式,从教师、用户、项目组间及项目组内部4个维度来评定,使成绩尽可能客观反映每个学生的真实水平。首先是指导教师根据项目组各成员在各实践环节的成果及表现进行打分;其次是用户给项目组各成员的工作表现进行打分;然后是各项目组之间根据原型界面系统展示及总结讨论情况给其他项目组打分;最后是各项目组内部成员根据分工合作完成情况相互打分。经过4个维度的评分后,指导教师将每个学生的4个分数进行加权计算,得出学生成绩等级。
4 结 语
针对计算机专业硕士软件工程实践教学现状,结合专题教学模式的特点,我们对专题模式软件工程实践教学进行了探索。文中的专题实践教学方案给出了软件工程专题实践教学中软件需求分析实践专题原型法需求分析实践子专题的教学目标、各教学环节内容及学生和教师角色任务、教学考核的详细设计,实现了核心教学内容、教师对各教学环节的跟踪指导及成绩评定的精细设计。教学实践得到了大多数学生的好评,学生的工程实践能力明显提升。同时,本文的实践教学方案,可以在后继6个专题中进行延续和拓展。