基于极限编程方法的教育软件项目开发

时间:2022-05-06 06:14:34

基于极限编程方法的教育软件项目开发

摘 要:探讨了教育软件项目开发过程中存在的问题,分析了目前常用软件开发模式的优缺点。结合教育软件项目的特点,给出了基于极限编程方法的教育软件项目开发模型。此模型将极限编程与教学系统化设计结合起来,是教育软件项目开发中行之有效的工程模型,可为教育软件开发者提供有益的参考。

关键词:极限编程;教育软件;教学设计;软件工程

中图分类号:TP319 文献标识码:A 文章编号:1672-7800(2012)003-0108-03

作者简介:汪灏(1984-),男,河南南阳人,河南大学计算机与信息工程学院硕士研究生,研究方向为计算机网络教育、教育软件工程;

陈丹敏(1983-),女,河南开封人,河南大学软件学院助教,研究方向为软件工程、形式化方法;杨建豪(1987-),男,河南濮阳人,河南大学计算机与信息工程学院硕士研究生,研究方向为计算机网络教育、教育软件工程。

0 引言

随着网络技术的发展,计算机和互联网广泛地进入学校和普通家庭。远程教育、教育信息化、信息技术与课程整合越来越受到人们的重视,社会对教育软件的需求也因此日益迫切。为了满足现阶段社会对教育软件的需求,我国开发了大量的教育软件产品。但是由于教育软件需求的多变性,使得很多教育软件产品延期交付和投入成本加大。同时许多使用者反映,这些软件不符合实际教学的需要,要么不能反映一定的教学理念,要么只是简单传统课堂内容的照搬照抄,没有发挥出信息化教育的优势,在实际运用过程中没有很好的教学效果。由于教育软件的多变性、个体性、群体性、教育性和科学性的特点,其开发过程的特殊性与传统的软件开发过程相比尤为突出,教育软件的开发过程要遵循教育基本理论和学科教学的基本理论和观点,传统的软件开发方法已经不能很好地适应教育软件的开发。

教育软件开发中存在的问题主要是由于以下几个原因造成的:教育软件的特殊性和复杂性;开发方法的简单叠加;教学设计与软件开发脱节;教育软件缺乏标准;教育软件评测的主观性。为了解决以上存在的问题,提高教育软件的产品质量,人们一方面研究教育软件的系统化开发模型,用教学系统设计理论指导教学软件的开发过程;另一方面研究教育软件的内容组织和表现形式,用教学论和学习论指导软件细节的具体设计。

教育软件项目规模大多以中小项目为主,开发团队也是中小团队,客户需求变化快。因此,目前特别需要一种适合中小团队的软件开发方法,来降低开发风险,提高开发效率。极限编程(ExtremeProgramming,简称XP)是一种轻量、高效、低风险、柔性、可预测、科学而充满乐趣的软件开发方式。由于教育软件与一般的商业软件最为明显的一个区别在于教学软件具有教育属性,其设计、开发和评价均需要借鉴教学设计的理论与方法,因此以产品为中心的教学设计理论结合XP方法,可以为解决目前教育软件中存在的问题提供理论指导。

笔者针对教育软件开发中的问题,结合极限编程的基本原则、核心实践和教学系统化设计的基本理论,给出了基于XP的教育软件项目开发模型,并对其进行分析,可为教育软件项目的开发提供参考和指导。

1 常用软件开发方法

常用的软件开发模型有瀑布模型、原型法模型和极限编程。

1.1 瀑布模型

瀑布模型是软件工程中经典的生命周期模型,瀑布模型一般将软件生命周期划分为7个阶段,分别为:系统需求分析、软件需求分析、概要设计、详细设计、编码、测试和运行维护。瀑布模型是以文档为驱动,每一阶段工作的完成都需要确认。

瀑布模型将软件开发的各个阶段严格划分,各阶段之间存在着严格的顺序性和依赖性,在进行开发之前,必须通过需求分析预定义并明确软件需求。

瀑布模型存在以下不足:一是瀑布模型很难适应需求模糊、多变的软件系统的开发;二是确认工作的滞后性导致解决问题的代价呈指数增长;三是瀑布模型的软件开发周期较长。

1.2 原型法模型

原型是指模拟某种产品的原始模型。软件工程中的原型法指的是在软件开发过程中,在获取用户需求后立即进行快速的分析并建立原型,用户与开发者通过试用原型加强沟通与反馈,对需求进行补充和精确化,通过改进原型和反复评价,从而实现对系统精确的理解。

原型法首先建立能够迅速反映用户主要需求的原型,为用户展现实现后系统的样子,用户可以比较直观地从用户使用角度出发对原型提出修改意见。开发过程中引进了用户评价,使系统设计人员能很好地把系统开发和用户需求结合起来,避免了过去因为不断变化的用户需求而带来的大量人力物力的重复消耗,从而加速了系统的开发进程。

原型法存在以下不足:一是为了把系统尽快展示给客户,项目开发初期往往考虑的不全面,导致原型不能成为最终软件产品的一部分,只是一个例子而已;二是软件代码质量往往很低,而软件维护成本比较高,需要许多功能完备且实用软件工具的支持,对工具与环境的依赖性较高。

1.3 极限编程

极限编程是KentBeck在1996年提出的。XP是一个轻量级的、灵巧且严谨和周密的软件开发方法。它是一种近乎螺旋式的开发方法,它将复杂的开发过程分解多个相对比较简单的小周期;提倡积极的交流、反馈以及其他一系列的实践,客户和开发人员可以非常清楚开发进度、变化、潜在的困难和待解决的问题等,并根据实际情况及时地调整开发过程。

极限编程有以下核心实践:

(1) 系统隐喻(Metaphor)。系统隐喻就是对系统的形象描述,使全体开发人员对开发的系统有个非常清晰的轮廓,帮助项项目成员理解系统的基本元素及其关系。

(2) 计划策略(Planning game)。该实践的主要思想是迅速粗略地制定计划,并不断完善。XP包括主要两类计划策略:交付计划和迭代计划。

(3) 简单设计(Simple design)。XP项目团队在整个测试和设计过程中,保持简单的设计,满足系统当前的功能要求即可。

(4) 现场客户(On-site customer)。为了事项目按时交付且符合客户需求,XP重点强调了现场客户,这能及时有效消除团队成员等待决策时出现的瓶颈,减少产生需求误解的机会。

(5) 测试。开发人员编写单元测试,客户编写功能测试(验收测试),以保证代码正确并实现用户描述的功能。

(6) 重构。在保证能运行系统可测试的前提下,对现有设计进行优化,及时消除冗余,提高代码的可读性和软件质量。

(7) 结对编程。所有的代码都由两人共同完成,以保证所有的设计决策都至少由两人完成,并至少有两人熟悉系统的每一部分,一人负责代码的全局复查,以提高代码的质量。

(8) 持续集成。代码完成后尽快集成到现有系统中并进行测试。为了保证迅速找出错误,要求任何时候由一对程序员将代码集成到系统中,或由专人集成。

(9) 集体所有。系统的所有代码为小组共有,在保证XP通过所有测试的前提下,任何开发人员在任何时候都可以改进系统中的任何代码。

(10) 每周40小时工作。反对超时工作,长时间地持续工作会降低工作效率,疲劳会使开发人员会犯更多错误,频繁加班甚至可能产生深层次问题。

(11) 编码标准。开发小组必须遵循相同的编码标准,使编程风格趋于统一,便于代码的清晰交流和优化。

XP提出了以上核心价值和实践,为软件开发人员提供了指导。开发小组可以根据具体情况灵活修改规则,关键在于遵循XP的思想。

2 基于XP方法的教育软件项目开发过程

XP和教学系统化设计都是具有方法论性质的指导软件开发和教学的技术和理论,笔者结合极限编程和教学系统化设计,给出了基于XP方法的教育软件项目开发模型,克服了当前教育软件开发的弊端。该模型抛弃了传统的常用软件开发方式,首先在团队组成成员方面增加了学科专家、教学设计人员和教学评估人员,且始终强调他们在开发过程中的重要作用,其次增加了教学需求分析、教学设计、教育测评等重要环节。基于XP方法的教育软件项目开发过程见图1。

图1 基于XP方法的教育软件项目开发过程

基于XP方法的教育软件项目开发模型把软件开发过程大致分为以下4个阶段:

(1) 计划和探索阶段。

基于XP方法的教育软件项目开发过程首先应该建立用户角色模型,并组建团队。团队成员必须包含对教育软件项目成功至关重要的学科专家、教学设计人员和教学评估人员这3个角色,尽量保证所有用户对系统都满意,体现出教育软件的教育性和科学性。然后在开发人员和教学设计人员辅助下,由用户制定形成可测试、可评估,并且反应系统需求和体现当前学习理论、学习研究成果以及符合传递教学媒体特点的描述性需求。技术人员最终确定系统的体系结构,形成系统隐喻。

教育软件开发首先需要解决的问题就是明确教学目标,它是在对学习内容和学习者进行分析的基础上形成的,所以教学需求分析和教学设计是本阶段的核心部分,其关系到教育软件开发质量。教学需求分析和教学设计是一个系统化的调查研究过程。首先最为关键的工作是确定教学目的。如果教学目的不合适,再好的教学也不能实现设计师的真正意图。确定教学目的可以采取两种方法:领域专家方法和绩效技术方法,然后进行教学分析,确定在学习之前学习者应该具备的技能、知识和态度即入门技能。该环节主要由学科专家和教学系统设计人员共同完成。同时还要分析学习者学习技能的环境和应用技能的环境,制定教学策略。教学策略必须体现出教学行为的指向性、结构功能的合理性、策略制订的可操作性、应用实施的灵活性、教学策略的调控性等特点,这样才能保证教育软件开发出来后的实用性、教育性和科学性。

进行教学设计和教学分析之后,开发者辅助客户编写用户故事,客户所编写的故事是进一步讨论的引子,而不是详细的需求文档。在任何项目中,需要客户根据故事的重要性来安排开发者的工作,回答所有开发者的问题,编写所有的故事。

用户故事是在发行版本规划时估计进度的依据,也是验收测试的基础。它与传统的用户需求说明相似,但又有明显的区别。首先,它们提供的用户需求的详细程度不同:用户故事只需提供用于估计完成时间的足够信息,而在编码过程中,开发人员会与客户进行面对面的交流,获得细节;其次,用户故事应该尽量避开技术细节,如实现算法,其中心是用户的需要和利益;最后,用户故事不必像用户需求说明那样提供庞大的文档,其形式可以是用户习惯性术语表达,不包含技术性符号。

用户故事制定完成后,由团队所有成员尤其是教学评估人员对其进行评价,首先需要评价学生根据用户故事在完成教学任务之后,他们能够做什么,评价结果可以以教学目的清单的形式显示。开发和管理人员讨论和评价用户故事的技术可行性和经济可行性。

开发人员和客户划分用户故事,从中选择一定的素材集,迭代开发,经过测试验收后发行版本。

在划分用户故事后马上进行版本规划,即用户在开发人员的指导下,从需要实现的素材中选择最有价值并完成一定功能的最小素材集,经测试验收后。然后转入下一个版本,逐步形成最终发行版本。

在每一个发行版本的开发过程中,开发人员通过迭代规划将素材分成若干任务并迭代编码、测试和验收,不断加入到当前版本中。与版本规划类似,迭代规划必须选择每一次迭代需要完成的任务,并严格控制每次迭代的时间,当迭代有可能不能按时完成时,重新做迭代规划。

(2) 设计阶段。

设计阶段包括概要设计和详细设计。概要设计就是设计软件的整体结构,包括组成模块、模块的层次结构、模块的调用关系、每个模块的功能等等。同时,还要设计该系统的整体数据结构和数据库结构,即系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系。详细设计阶段则是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。该阶段与传统软件开发过程的设计阶段最大的不同就是,教育软件项目的XP的开发过程提倡使用简单的设计方法,满足适用系统需求即可。

(3) 编码阶段。

为程序员分配好编码任务,将软件的设计具体化为软件代码。教育软件项目的XP的开发过程推荐开发小组使用统一的编码标准、工具、环境。统一标准的编码规范可保证代码的一致性、可读性和可维护性。在编码过程中采用结队编程的方法,同时保证代码集体所有,在保证可运行、可测试的前提下,采用重构方法对代码进行优化,提高代码的可读性和质量。

(4) 测评阶段。

在编码实现开发任务的时候,开发人员必须同时编写单元测试。一般情况下,建议先编写单元测试,每完成一个任务就集成代码,并立即对集成后的系统作测试。只有通过了所有的单元测试,无误的代码才能最终集成到系统中。在迭代结束时,所有的单元都被测试过,并进行过功能测试。

在软件进行单元测试和功能性测试之后,要进行教育总结性评价,通常这部分工作不是由教学设计人员来进行,而是由教学评估人员进行,保证评价的客观性和准确性。教育总结性评价包括两个阶段:专业评价阶段和实地试验阶段。专业评价阶段的目的是要判断当前教育软件所实现的教学方法或教学方案是否能够满足所定义的教学需求。实地测验阶段的目的是要记录采用该教学方案后在预期的环境中对目标人群的有效性。最后形成评价报告,该报告既要包括专家评价分析,又要包括评价的实地试验分析。评价报告在教育软件下一阶段的完善和优化工作中具有重要的指导意义。

4 结束语

在开发的一些小型教育项目中,笔者采用了基于XP方法的教育软件开发模型的方法,特别是在团队中增加了学科专家、教学设计人员和教学评估人员,开发出的教育软件的教育性和科学性很突出。实践证明,这种方法具有很好的借鉴和参考价值。但是在开发过程中,由于XP自身的开发特点,XP的某些实践得不到中国程序员和客户的接受,比如结对编程和现场客户,所以还需要对XP进行更多的研究和实践,使XP的实践和观念更加具有影响力。

参考文献:

\[1\] BECK K.Embracing change with extreme programming\[J\].Computer,1999(10).

\[2\] CHROMATIC.An introduction to extreme programming\[J\].O'Reilly Open Source Convention in San Diego,CA,2001.

\[3\] GIANCARLO SUCCI,MICHELE MARCHESI.Extreme programming exanuned\[M\].Addison-Wesley,2001.

上一篇:电力拖动与控制虚拟实验室的研究与实现 下一篇:基于活动理论的交互白板培训活动设计