APP下载

面向过程的软件工程课程质量辅助评价与控制研究

2010-12-31朱庆生付鹤岗

计算机教育 2010年24期


  摘要:软件工程是一门实践性、工程性很强的课程,如何在软件开发的全过程对学生进行质量监控和评价,是切实增强学生实践能力,规范学生软件开发活动和行为的有力保障。文章从现有评价体系存在的问题、基本的改革思路和具体实施三个方面,对课程质量评控体系进行了探讨,并对其中涉及的一些关键问题进行了必要的论述。
  关键词:软件工程;质量评价;工作流
  
  1研究背景
  软件工程是计算专业一门重要的主干课程,其教学内容紧密围绕软件开发过程中的各种方法、技术和原理,从而为计算机软件的开发、维护、管理等活动提供过程指导。通过本课程的学习,使学生掌握大规模软件开发中的主要技术和方法,具备软件工程师从业需要的专业技能,并在工作实践中能胜任研究、分析、设计、生产、测试、管理等多种角色[1]。
  但长期以来,软件工程在教学实践中也暴露出很多问题,这固然与软件工程知识面广,抽象性、实践性强的特点有关[2],但也反映出各高校在教学实践模式,课程质量控制方面存在一定不足:
  1) 除理论教学外,尽管也设置了实验与课程设计环节,但普遍缺乏对实验与课程设计的过程质量控制与评价机制。多数教学模式仍以“事后评价”代替“过程评价”,忽略了对学生软件实现过程中关键点(如编码风格,测试标准)的质量控制与评价,导致学生在实践中“结果正确,方法(过程)错误”。
  2) 缺乏系统化的评价与控制体系。教师缺乏对学生学习过程的导向和评价机制[3],无法及时将发现的问题反馈到理论教学环节中,导致教学与实践的脱节。
  3) 缺乏对软件管理思想的实践和质量控制体系。
  
  软件工程是以开发和管理方法为核心的工程学,但学生在实践中往往表现出对软件管理的漠视,如不进行配置管理、软件评审、计划控制等,这与目前的评价机制中学生只注重开发方法与开发成果的做法不无关系。
  4) 缺乏对学生教学质量进行评价与控制的辅助平台。教师如果只在期末对学生进行考核与评价,学生错误的方法和过程已经发生或无法纠正,如在学习过程中对学生进行考核与评价,又因为过程点很多,造成教师工作量增大。因此必须借助一些自动化辅助评价工具,实现快速、可靠的质量评价,并通过平台及时反馈给学生,以对其错误的开发方法和过程进行修正。
  基于上述分析,我们认为:传统的质量评价体系难以在教学过程中真正把握学生的学习效果,也难以充分调动学生学习的主动性和创造性,因此改革现有课程的评价方式,建立科学的评价体系,对于培养创新型合格的软件人才具有十分重要的意义。
  2课程改革的基本思路
  软件工程学有一个重要的思想,即“软件质量形成于软件生产的全过程”,只有使得影响软件质量的全部要素在开发过程中始终处于受控状态,才能提高最终软件产品的质量。如果将这一理念移植到教学活动中,我们认为学生的“学习质量”也是由教学、实践过程决定的,规范、改善学生在软件开发过程中的各项活动,培养学生的质量意识、管理意识和协作意识,远比期末的单一考核方式更有价值和意义。
  软件能力成熟度模型(Capability Maturity Model for Software,简称CMM)是目前评价软件企业过程能力成熟度的标准,也是帮助企业改进软件产品质量和过程的指南,对规范员工(当然也包括学生)的软件开发过程、活动、方式等具有重要作用。根据CMM,可将软件生命周期分为产品概念、产品定义、产品开发、产品测试、用户验收和产品维护等6个阶段,包含项目管理、项目研发和机构支撑等3类过程、19个过程域,其中研发过程包含需求分析、技术预研、系统设计、实现和测试、系统测试、Beta测试、客户验收和项目评审等8个过程域。
  由于每个过程域可看作一个工作流程,其中包含若干相互联系的原子活动和文档、数据等,这与工作流系统的思想非常相似,因此我们可以利用工作流技术设计、建立一个工作流环境,通过活动与角色以及角色与具体用户之间的关联,即可实现将软件开发过程中的各种文档、任务和程序在参与项目的各用户之间共享和传递,并能有效地重用已有项目成果,或对软件过程进行有效地管理和控制。
  例如,通过对CMM中需求分析过程的适当裁剪,我们可以定制一个如图1所示的工作流模型。
  
  图1需求分析工作流
  首先,各项目小组通过“用户”(用户由项目提出小组的成员担任。)进行需求调研,形成原始的需求调研报告,然后通过分析、建模,提炼出实际的用户需求和系统需求,并在项目组内部进行需求评审。一旦发现问题,则记入检查报表并进行重新分析,否则可进入文档编写和需求确认活动。
  当流程实例运行的时候,活动可根据上述模型定义自动分配给指定接收者,并且有关完成此活动所需要的数据也会传递给相应的接收者,从而提高业务过程执行效率。此外,流程中采用的多种触发机制不仅使得整个过程自然衔接,而且充分体现了流程活动间相互协作、相互制约的特点。
  为全面了解学生在软件过程中的状态,工作流模型中还设置了多个观测点和控制点,指导教师可以通过各观测点评价学生的工作,或通过各控制点直接参与该流程,如评审学生的项目成果,控制软件配置项的变更等等。
  为减少评价时的人为偏差(类似高考批改作文题),在某些观测点,我们引入了多方评价、及时公示的方式。如上图中观测点1,我们采用了“用户+教师”的评价方式,因为用户可以更准确地评价学生的需求获取活动。类似,在观测点4,我们可以考虑加入实训管理人员的评分,以获得对学生更中肯、适当的评价。
  通过这种改革方式,有效地解决了质量评价体系中的两个关键问题:1)规范和调整了学生的软件开发过程,强制学生在一种相互协作、相互支持的环境中完成项目开发所涉及的所有活动和任务;2)为教师的精细化管理和准确、客观的质量评价打下了坚实的基础,并籍以形成与理论教学良好的互动与反馈。
  3质量评控系统
  根据以上改革思路,我们设计了一个包括指导教师、学生、实训管理人员、软件开发过程以及评价指标在内,更为科学合理的质量评控系统[4],并将整个系统划分为4个模块,如图2所示。
  1) 工作流定义模块。
  通过对CMM模型的剪裁和归并,以更加灵活的方式构建适于教学需求的软件开发流程,并将定义的流程保存在工作流模型库中。一旦该模型定义好后,所有的流程实例都只能在该模型所确定的框架下执行,确保实训项目过程的标准化。
  
  图2质量评价与控制体系结构图
  指导教师可以定制多个工作流模型,以满足实践中不同开发方法、项目的实际需求。
  2) 工作流执行模块。
  负责软件开发工作流程的调度和执行,根据流程定义进行解释,并按照解释结果对流程进行控制、任务管理和异常处理等。流程中各活动之间相互联系,相互协调,也相互制约,形成教师、学生、实训管理人员之间的有机融合,从而为全方位、多角度地监控软件开发过程中的各个环节,保障教学质量提供“引擎”支持。
  3) 过程质量反馈模块。
  质量评价系统将项目实践中的各种活动信息进行整理、统计、分类后,及时反馈给指导教师和实训管理人员,并对整改意见的落实情况进行动态监控。
  教师也可加载一些辅助工具,如静态测试工具、动态测试工具、代码分析器等进行项目信息的统计和生成,最终形成一个制度化的、运转良好的辅助平台。
  4) 过程质量评价模块。
  该模块由过程评价和结果评价两部分组成。过程评价的依据主要是观察学生的软件开发活动是否按照流程标准规范有序的进行,各项活动是否达到了预期的效果;结果评价则依赖于过程质量反馈模块中产生的各种观测数据和信息,如需求规格说明,项目开发计划、设计规范、测试用例、源代码、测试记录、配置管理方案等。根据软件文档规范和产品质量标准,形成对项目成果的客观评价。
  
  为加强学生的管理意识、质量意识,激励学生提高学习自觉性和创新能力,我们提出一种虚拟费用管理与评价方法,即对每个项目小组,执行虚拟项目经费管理,包括计划提前/超期奖惩、过程效率奖惩、质量优劣奖惩、实训提升绩效等,并将其作为整个项目组学生的基准评价。
  5) 质量控制服务模块。
  通过制定一系列实践教学质量管理制度与办法,对整个项目、项目组和项目资源的运作进行管理、服务。
  下面,我们以“配置变更管理”流程为例,阐述如何通过质量评价和控制服务增强学生对“软件版本”和“配置管理”的认识,图3所示为“配置变更”的工作流模板。
  图3配置变更管理
  与企业中实际的软件项目管理相同,软件配置项一旦通过正式评审即成为基线。如果项目组成员需要对基线内容进行修改,必须向项目经理提出“变更请求”,由项目经理做出分析和评估后,再向指导教师提出“变更审核”,教师可指出其中可能存在的问题并拒绝该请求,也可指导学生完成该变更请求,并在项目经理复审之后,重新建立新的基线。
  由于工作流的引入,学生对软件配置项尤其是基线的维护必须依据标准过程实现,这样就规范了学生的配置管理活动,如变更请求、变更成本估计、复审、修改、测试等活动均有文档记录,是学生完成项目质量的重要评价依据。此外,为体现项目管理的严谨性,由于配置项进行变更、完善所产生的项目延迟将自动通过“项目经费”体现,并计入项目组的基准成绩中。
  此外,在项目的选题与计划方面,为尽量体现项目的真实性,各项目组只能从其他小组的备选题目中选择设计题目,这样就解决了项目实训中缺乏实际用户和用户需求的问题。其次,各项目组确定选题后,还需选定适合的软件过程模型,并进行人员计划、时间进度计划、风险分析与识别等活动。其中人员、时间等要素将直接与工作流系统中的角色、时间进度一一映射,并通过量化进入过程质量反馈和评价模块,将项目计划和计划控制有机结合起来,为后续的项目评价提供了合理的依据。
  通过上述评控机制的引入,一方面实现了软件工程过程、软件管理在教学实践中的完全可视化,满足了教学双方实时沟通、协调的需求。另一方面,由于流程化活动模版和标准的引入,更加规范了学生的软件开发行为,加深了学生的质量意识、管(理)控(制)意识和对软件开发理论知识的理解。
  以该质量评控体系在本院2008—2009学年的教学实践来看,学生普遍反映通过该平台,能够较好地理解、掌握软件工程项目的开发理论和方法,与单纯的教学、评价体系相比,学生学习的主动性、积极性增强了,系统分析能力、设计能力、测试和维护能力、团队协作能力均得到了较大的提高。
  
  4结语
  对于像软件工程这样一门实践性、工程性很强的课程,仅仅简单的从考试或实验成绩角度对教学效果和学生进行评价无疑是不够的。客观地说,作为第一次开发实际软件系统的学生,要在较短的时间里开发出各方面都达到真正实用要求的系统是难以完成的。实践的意义更主要是让学生经历完整的过程,体验各阶段方法和工具的应用,锻炼包括技术在内的各种能力(如与用户交流、文档写作、协作与项目管理等),以提高其综合素质。
  因此,从这个角度来说,对软件过程的要求、熟悉和评价远比对结果的评价更加重要,从学生刚开始hr8dHqNQA2AW2mHmT961jPC35MjSJ8T/tUvNU+Ew4qE=接触项目开发的这一刻就规范学生的软件开发过程、开发行为,并施以积极、适时的引导和评价,才能为其今后软件开发的“标准化、工程化、规范化、产品化”奠定坚实的基础。
  当然,如何在教学实践中,多角度、多层次的对学生实践能力进行评价和控制研究是一个复杂的系统工程,目前我们也正处于探索与试验阶段,期待在以后的工作中进一步获得更有效、更完善的研究成果。
  
  参考文献:
  [1]