徐海涛,陈 婧
(杭州电子科技大学计算机学院 浙江 杭州 310018)
实践教学在计算机类专业教育中起着不可替代的重要作用,也是提高人才培养质量的切入点和突破口,高校应将实践教学环节作为计算机类专业人才培养体系建设的核心任务之一,并采取各种办法促进学生提高动手能力。为此,杭州电子科技大学在制订计算机类专业培养计划时,特别强调了实训教学环节的重要性,专门设立了“创新实践”课程。根据学生的兴趣方向,分组配备导师进行针对性实训。通过本课程的学习,学生将会对创新或者创业了解得更为深入,并且学生在相关实践过程中能提高系统设计及解决实现过程中具体问题的能力,为将来深造或工作带来实质性帮助。
近年来,国内外很多高校都在进行计算机类专业教育的改革创新,将一些新的教学方法引入实践教学中。从2020 年开始,本课程组积极探索在创新实践课程中引入CMMI 和FDD 结合的实践教学模式改革,并已取得阶段性成果。
CMMI(Capability Maturity Model Integration,能力成熟度模型集成)是一种用于评估和改进软件工程、系统工程和产品开发过程的方法。CMMI 最初由美国国防部(DoD)开发,旨在帮助其承包商改进其软件工程和系统工程过程,提高其开发的软件和系统的质量、可靠性。CMMI现在已经成为一种全球性的模型,被广泛应用于各种类型的组织,包括工业、政府和学术界。CMMI 模型包括五个不同的成熟度等级,每个等级代表了组织的过程成熟度,从初始级别(Level 1)到优化级别(Level 5)。每个等级都定义了一组特定的过程目标和实践,以帮助组织改进其软件和系统开发过程的效率和质量。CMMI 为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架,因而能够从总体上改进组织的质量和效率。通过实施CMMI模型,可以帮助提高产品和服务质量、提高生产效率和成本效益、提高客户满意度、提高员工参与和团队合作、改善管理决策和控制风险等。CMMI 主要关注点在于成本效益、明确重点、过程集中和灵活性四个方面。
特征驱动开发(Feature Driven Development,FDD)由Jeff de Luca、Eric Lefebvre、Peter Coad 共同开发,是一种敏捷软件开发方法,其着重点在于快速、可重复地交付高质量的软件功能。FDD 的主要特点包括以下几点:
①以功能为中心:FDD强调将软件开发过程划分为可重复的、功能完整的特征集,以便于跟踪和管理软件功能。
②迭代开发:FDD 鼓励团队以迭代方式进行开发,每次迭代都可以交付完整的特征集,并在下一次迭代中进一步完善和优化功能。
③强调团队合作:FDD强调开发团队成员之间的紧密合作,以便确保所有人都了解项目的目标和计划。
⑤强调测量和监控:FDD提倡对项目进度和质量进行测量和监控,以便及时调整开发过程,确保项目成功。
在“创新实践”课程实训教学中,总体实施过程使用基于FDD 的软件开发过程,该方法将实践过程分为五个阶段,分别是:
①开发总体设计阶段:在这个阶段中,团队成员通过与客户的交流,理解并定义项目的总体目标、范围和需求。然后,团队将这些需求转化为一个总体的功能模型,形成一个概览,作为后续开发的基础。
②制订特征列表阶段(Build a Features List):在这个阶段中,团队将总体功能模型细化为一组具体的、可执行的特征列表。这些特征是项目开发的基本单位,每个特征都是客户或用户希望在软件中实现的一个功能或者一组相关功能。
③计划阶段(Plan by Feature):在这个阶段中,团队成员根据特征列表,制订实现这些特征所需的计划和进度。在制订计划时,特征会被分解成更小的、可实现的子任务,然后根据子任务的优先级和依赖关系,制订一个可行的开发计划。
④设计特征阶段(Design by Feature):在这个阶段中,团队成员对每个特征进行详细的设计,并将其转化为代码实现的方案。设计阶段可以迭代多次,直到设计方案满足客户需求、符合项目目标并且对后续开发有利。
首先,米勒法官和约翰·桑顿就是文明的象征。他们并没有压榨虐待巴克,相反,生活在法官家中,让巴克天生有了一种自豪感。如果说,巴克与米勒法官只是一种合作关系,那么与桑顿生活在一起,则让巴克充满爱意。显然,作者把桑顿塑造成了一个理想的主人。巴克对桑顿的爱,让它对桑顿的命令言听计从。桑顿也成了连接巴克与人类社会的唯一纽带。桑顿遇害,巴克为主人复仇之后便毅然决然回应了自己内心的呼唤,回归了荒野。桑顿在此便是人类中心主义的一个反例。一个个主人的更替,只是在寻求理想中的文明“他者”。
⑤构建特征阶段(Build by Feature):在这个阶段中,团队成员根据设计方案,进行特征的实现和测试。一旦实现了特征,就会进行集成测试和系统测试,以确保特征符合客户要求、系统稳定且没有错误。在构建阶段中,团队可以通过不断迭代,优化特征的实现,以适应客户需求的变化。
在实际的实施过程中,本课程组对FDD 方法进行了融合CMMI 改进。主要改进如下:
2.2.1 角色分配
在CMMI 中,参与一个软件项目的角色比较多,一般有项目经理、软件总设计师、软件设计师、软件测试人员、软件质量保证人员、软件配置管理人员等。而FDD 的角色一般较少,主要有三种:业务专家、首席架构师和主程序员。本方法中,为了满足对CMMI 三级所有过程域的支持,采用的角色有:项目经理、业务专家、首席架构师、主程序员、软件质量保证人员、软件配置管理员等。
在“创新实践”课程开始之前,首先让学生自由组队,每个团队的人数限制在6―8 人之间,项目经理由一个具备一定管理能力的学生担任。业务专家由教师担任,如一个班级人数比较多,也可以邀请助教、研究生等参与,业务专家作为客户代表对产品提出需求。首席架构师、主程序员、软件质量保证人员、软件配置管理员等角色分别由一名同学担任。
2.2.2 PPQA 过程域
在传统的FDD 方法中,并没有专门的软件质量保证人员。本混合方法增加了软件质量保证人员来实现CMMI中PPQA 过程域。
软件质量保证人员通过参与项目的阶段性评审和审计、对项目日常活动与规程的符合性进行检查、对配置管理工作进行检查和审计、跟踪问题的解决情况等内容来保证软件的质量。此过程中,形成的文档主要有:《过程评价表》《活动问题报告》《代码检查报告》和《产品问题报告》等。
2.2.3 CMMI 标准过程域
FDD支持或部分支持一些CMMI三级过程域,如CM、MA、IPM、PI、R D、RskM 等。为了完全支持这些CMMI过程域,需要确定风险源、风险参数、风险管理策略和制订风险缓解计划等,并在项目实施过程中不断跟踪风险,适时实施风险缓解计划。
2.2.4 适度的软件文档
CMMI 重视文档在软件开发中的作用,而FDD 作为敏捷开发方法却强调轻文档。我们认为一定的文档有利于项目的维护工作,也有利于新成员快速熟悉项目。因此,本混合方法强调适度的软件文档。采用的软件文档主要包括:产品需求文档、项目管理文档、软件开发文档、软件测试文档、用户指南等。
2.2.5 强调需求管理
FDD 的一个重要特点是强调对需求的管理。CMMI也非常注重需求管理,包括需求分析、需求跟踪和需求变更管理等。通过结合CMMI 和FDD 的需求管理方法,可以更好地满足客户需求,提高软件质量。
2.2.6 加强测试和验证
CMMI 提供了一组测试和验证的最佳实践,包括测试计划、测试执行和测试结果分析等。将这些最佳实践与FDD的测试方法相结合,可以确保软件交付的质量和稳定性。
2.2.7 强调团队合作和沟通
FDD 强调团队合作和沟通,而CMMI 也强调了团队协作和知识共享。通过结合这两个方法,可以确保团队成员之间的协作和沟通,并促进知识共享,从而提高开发效率和质量。
2.2.8 重视过程改进
CMMI 强调持续的过程改进,包括识别和纠正过程中的问题,并实施改进措施。通过将这些方法与FDD 相结合,可以不断优化开发过程,提高软件质量和效率。
本课程组改进的结合Scrum 和FDD 的软件开发实训方法已在作者所在的学校计算机及软件工程专业实施3 个学期,取得了不错的效果。课程成绩优良率、学生满意度等均得到了提高。另外,因为计算机类专业学生的毕业设计题目相当一部分也是软件开发类题目,所以经过实施本方法的“创新实践”课程训练之后,学生的毕业设计成绩也得到了提高。教学效果的统计数据如表1 所示。使用本教学方案后,课程成绩优良率比之前平均提升7%,学生满意度平均提升4.3%,毕业设计优良率平均提升6%(见表1)。
表1 教学效果对比数据
实践教学是培养具有创新意识的高素质工程技术人才的重要环节,是理论联系实际、培养学生掌握科学方法和提高动手能力的重要平台。本文针对结合CMMI和FDD思想的教学法在“创新实践”课程中的应用进行了探讨,提出了一种较为实用的实践教学方法,在实际教学中也取得了较好的效果。