极限编程课程教学研究
极限编程课程教学研究(精选7篇)
极限编程课程教学研究 第1篇
极限编程是适用于中小型团队在需求不明确或者迅速变化的情况下进行软件开发的轻量级方法学。极限编程课程在我院是首次开设,在国内公开发表的刊物上也还未见有关于该课程的教学研究。
1 教学目标
通过本课程的学习,使学生理解敏捷开发的价值和原则,了解极限编程的基本概念,熟悉极限编程的各个实践,掌握极限编程的主要实践,理解极限编程的价值和原则;理解各种XP实践的优点及限制,明确其适用条件,能够把恰当的XP实践应用到自己参与的软件工程中,或者改进相应的XP实践以适应实际的工程需要;使学生可以快速融入采用极限编程的团队或把极限编程方法带给新的团队,提高学生的就业竞争力。
2 教学内容安排
本课程共68学时,其中18学时为实验部分。
关于极限编程的著作很多,但大都不适合用作教材,目前还没有专门针对大专院校的极限编程教材。比较经典的是Kent Back的《解析极限编程拥抱变化》[2],也是第一本关于XP的图书,介绍了XP背后的思想,但成书较早,也很抽象,不适合用作教材。经过反复比较,最终选择了《敏捷开发的艺术》[3],该书详细描述了每一种XP实践,讨论了XP的原则和敏捷开发的原则,为团队使用XP提供了实用的指导。
2.1 理论教学内容安排
理论教学内容分为三个部分:极限编程的基本概念、XP的37种实践、共同的价值和原则。
第一部分极限编程的基本概念包括五方面内容:敏捷开发的背景、敏捷开发宣言和原则、XP生命周期与传统生命周期的对比、XP团队组成、XP基本概念。
第二部分是本课程的核心内容,具体介绍37种XP实践的概念、作用、实施建议与禁忌。37种XP实践又分为思考、协作、发布、计划、开发五个单元。思考单元包括5种实践:结对编程、精力充沛地工作、信息化工作场所、根源分析、回顾;协作单元包括8种实践:信任、坐到一起、真实客户参与、统一协作语言、站立会议、编码规范、迭代演示、汇报;发布单元包括7种实践:全部完成、没有bug、版本控制、十分针构建、持续集成、代码集体所有制、文档;计划单元包括8种实践:愿景、发布计划、计划博弈、风险管理、迭代计划、松弛、故事、估算;开发单元包括9种实践:增量式需求、客户测试、测试驱动开发、重构、简单设计、增量设计和架构、试验方案、性能优化、探索性测试。
第三部分介绍各种敏捷开发方法共同的价值和原则,以指导对37种XP实践的灵活运用与改进。共同的价值和原则包括五大主题:改善过程、以人为本、消除浪费、交付价值和寻求技术卓越。
2.2 实验教学内容安排
在实践中,根据教学内容和课时要求,安排了9个实验题目:Java单元测试工具JUnit的使用、结对编程、版本控制工具SVN和Git的使用、自动编译脚本Ant的使用、自动编译脚本Maven的使用、持续集成工具Hudson的使用、测试驱动开发、代码重构、客户测试工具Fit Nesse的使用。实验教学的目标是让学生体会并加深理解极限编程实践的实施过程、熟练掌握团队常用开发工具的使用、掌握极限编程的主要实践。
3 教学方法和手段
3.1 分组和团队学习
极限编程是一种软件开发方法学,是指导软件开发实践的理论,实践性和可操作性很强。为了调动学生的兴趣与热情,尽可能给学生提供实践环境,我们以小组的形式来进行任务的分配、完成与分享讨论。一个班的学生自由分为9组,每组6至8人,然后由组员推荐一名组长,负责组内的分工与协调。按照自愿的原则,每个小组分配一个实验题目作为任务,每一个任务都有具体要求。小组确定任务后,在规定的时间内,负责收集整理该主题相关资料,按要求形成文档、演示等成果,并记录每位成员的工作内容和工作量。
3.2 课堂分享与讨论
根据课程进度和实验题目的顺序,安排各个小组在课堂上给大家分享他们的工作成果,可能是概念的介绍、方法和示例的演示、参考手册等。每次分享时,要提前通知学生下次要分享的任务和时间安排,以便负责该任务的小组及时准备,不负责该任务的小组提前了解。分享结束之后是关于该主题的讨论,分为三个阶段:其他小组成员对该小组的提问、老师对该小组的提问、老师的总结。针对提问中发现的问题和不足,负责分享的小组在课堂下进行补充和完善,并提交完善后的工作成果。
3.3 实验验证
实验课上,老师把完善后的工作成果共享给所有学生,大家参考该成果进行实验,并验证该成果的正确性。如果仍然存在问题,则有负责该任务的小组继续完善,并提交最终版本的工作成果,作为实验评分的依据。
4 期终考核方式
为了引导学生积极参与到完成小组任务的团队工作中,对考核方式进行了相应调整。考核成绩分为两部分:实验成绩占30%,以小组的工作成果和实验结果为依据;期末成绩占70%,以期末考试试卷为依据。这种考核方式大大激励了学生的学习热情,也给优秀学生提供了施展他们创新能力的机会。
5 结束语
参考极限编程的教学目标进行了本门课程的教学内容安排,采用课堂讲授与小组学习、分享讨论、实验验证相结合的教学方法,最后根据课程特点制定了相对灵活的期终考核标准。教学实践中,学生对该课程兴趣浓厚,参与小组任务和课堂讨论的热情较高,在完成小组任务和实验的过程中,掌握了极限编程的主要实践,锻炼了自学能力和团队配合意识,提高了动手解决实际问题的能力。从平时的课堂表现和期终的考核结果来看,取得了良好的教学效果。
参考文献
[1]杨帆王大志.浅谈极限编程[J].电脑知识与技术,2008(3).
[2]Kent Beck著,唐东铭译.解析极限编程——拥抱变化[M].北京:人民邮电出版社,2002.
极限编程课程教学研究 第2篇
关键词:Scrum,极限编程,教学改革
1 引言
软件工程学科具有复杂性高、规模大、应用面广、工程性强的学科特点, 因此各个高校在创建教学体系时均强调培养学生的实际动手能力、工程应用能力和自主创新能力。我校软件工程专业作为国家特色专业, 在制定软件工程专业教学大纲时, 特别强调了实践教学环节在整个教学中的重要性。其中, 软件项目实践课程作为一门综合性实践课程, 在整个软件工程专业实践教学体系中起着非常重要的作用。
近几年, 国内很多软件学院都积极开展工程教育的改革探索和实践, 也取得了一些成效。如将案例教学法、项目驱动教学法、任务驱动教学法等引入了软件项目实践的课程教学中。从2010年开始, 我校软件工程学院在实践教学改革方面启动了基于CDIO工程教育模式的软件工程实践教学改革, 积极探索基于CDIO模式的软件工程专业人才培养模式。其中, 结合Scrum和Extreme Programming (极限编程, 简称XP) 思想的软件项目实践课程教学模式改革已取得了阶段性成果。
2 Scrum及XP简介
Scrum是当今被广泛应用的敏捷开发模式之一。它是一种迭代式增量软件开发过程, 通常用于敏捷软件开发, 其中包括了一系列实践和预定义角色的过程骨架。Scrum一般来说有以下典型特点:
(1) 让客户也参与到开发团队中, 成为开发团队的一部分;
(2) 经常提交可以工作的中间增量产品;
(3) 为适应用户需求的变化, 可以不断更改项目的需求;
(4) 杜绝不切实际的计划和冗长的文档, 强调团队灵活自如, 自由地自我组织和自我管理[2]。
Scrum也有着跟其他模式不一样的特征, 如一个Scrum团队由3种角色组成, 包括:产品负责人PO Product Owner) 、Scrum主管SM (Scrum Master) 和开发团队 (Dev Team) (适宜的人数是5到10人) 。产品负责人相当于舵手, 把握团队前进的方向;开发团队开发程序;Scrum主管相当于鼓手, 负责协调团队。
极限编程 (XP) 是一个轻量级的、灵巧的软件开发方法, 同时它也是一个非常严谨和周密的方法。极限编程的核心是结对编程, 通俗含义指的是两个程序员并排坐在一台电脑前, 面对同一个显示器, 使用同一个键盘, 同一个鼠标一起工作。他们一起分析, 一起设计, 一起写测试例子, 一起编码, 一起单元测试, 一起整合测试, 一起写文档等。基本上所有的开发环节都一齐肩并肩地, 平等地, 互补地进行开发工作[4]。
3 Scrum与XP在教学中的实施
3.1 角色分配
如上所述, 在软件项目实践课程中, 参与到Scrum中的角色主要有三种:产品负责人、Scrum主管和开发团队。产品负责人作为客户的代表, 决定着产品的发展方向。负责收集项目涉及到的需求, 并且确定这些需求的优先级。Scrum主管是一个非常重要的角色, 他在整个团队中起到一种老师、教练和促进的作用, 要保证团队不受干扰、保证团队高效地开展工作, 并且移除一些障碍。Scrum主管要有影响力的学生来担任。
在基于Scrum方法的软件项目实践课程进行时, 首先让学生自由组队, 每个团队的人数大概控制在7-9人左右。其中具备一定管理能力的学生作为Scrum主管。产品负责人一般由教师担任, 但如果班级人数比较多, 那么可以邀请助教、研究生等担任产品负责人。产品负责人作为客户代表, 决定着产品的发展方向。其他学生则作为开发团队中的成员。
3.2 实施过程
(1) Sprint周期
在软件项目实践课程正式开始之后, 教师参与到每个小组的前期项目计划制定中。帮助学生了解要开发的产品的任务、工作量以及任务的优先级。Sprint周期的长度不是固定的, 可以灵活设定。但需要注意的是, 为统一课程的进度, 每个小组的Sprint开发周期应该是一致的。
(2) Sprint计划会议
软件项目实践课程的所有参与者, 包括产品负责人、Scrum主管和开发团队都应该参加Sprint计划会议。在Sprint计划会议中, 产品负责人详细说明每个任务的优先级。开发团队则挑选出能在这个Sprint周期内完成的任务, 并对每个任务估算需要的工作量。每个任务都需要具体落实到开发团队的某个学生身上。
(3) 极限编程
虽然Scrum提倡团队配置精英成员, 即要求每个团队成员都可独当一面、技术过硬、开发经验丰富[5]。然而这毕竟是学校的软件项目实践课程, 主要任务还是在于培养锻炼学生。与公司的开发团队不同的是, 大多数学生由于并没有很丰富的软件开发经验, 在开发过程中出现产品错误多、开发效率低、项目进展缓慢、过于依赖某一个人等现象还是比较普遍的。针对这些问题, 我们尝试在软件项目实践课程中使用了极限编程的方法。每个功能模块都至少由两人负责, 他们之间能够有效地交流, 相互学习和传递经验, 从而提高了整个团队的工作效率。使用极限编程的方式后, 我们发现开发团队能提供更好的设计质量和代码质量, 能训练更强的问题解决能力。同时, 采取极限编程的学生更容易树立信心, 从学习中获取更多的满足感。
(4) 开发文档
虽然Scrum方法更加注重灵活, 并不像CMMI那样重视文档, 但也不是意味着不写文档。适当的文档可以帮助新人快速熟悉正在开发的项目, 同时也有利于在项目结束后的维护工作。所以, 在我们的软件项目实践课程中, 还是要求学生编写适量的开发文档。
(5) 持续集成
Scrum作为敏捷开发模式中的一种, 还是非常强调持续集成 (Continuous Integration) 这一环节的。要降低项目的风险、确保产品的质量, 尽早且频繁、持续地集成是一种事半功倍的方法[6]。在我们的实践过程中, 采用的持续集成流程图如图1所示。
(6) 期末成绩
多年以来, 学校的考核方式主要是笔试, 笔试试卷中有选择题、填空题、简答题等。学生为了取得好的成绩, 往往背诵一些概念、原理, 同时在考试中抄袭作弊也是老大难问题。这样的考核方式与我们的培养目标是不吻合的, 因此必须实现由“知识考核”向“能力考核”的转变。在我们的软件项目实践课程的总成绩中, 由平时成绩、期末笔试、实训项目成绩三部分组成。这三部分的分别比重为10%、30%、60%, 实训项目成绩占比重最大。并且, 为避免在开发小组中“吃大锅饭”的情况, 我们按照每位学生在开发小组中的贡献值来评定他的实训项目成绩。
4 教学效果
我们改进的结合Scrum和极限编程XP的软件项目实践方法法已在作者所在的软件工程学院实施3个学期, 在课程的及格率、学生调查表、学生的学评教评价等方面均取得了较好的效果。另外, 还有一个意外的收获, 那就是毕业设计的良好率也得到了提高。究其原因, 因为软件工程专业学生的毕业设计很大部分也是完成某项目的软件开发, 这一点与软件项目实践课程是类似的。所以经过本课程训练之后, 学生的毕业设计良好率也取得了提高。教学效果的统计数据如表1所示。
5 结束语
针对软件工程专业工程性、实践性强的特点, 本文针对软件项目实践课程教学改革进行了探讨, 提出了一种结合Scrum和极限编程XP思想的教学方法, 在实际教学中也取得了较好的效果。
在取得效果的同时, 我们也发现了一些需要进一步解决的问题。如在开发小组内部, 有些同学或因为基础差或因为自觉性差等原因, 在分组中就有了依靠的对象。因此如何调动激励这些同学的积极性, 让他们更好的参与到团队中去, 是我们以后重点解决的问题。
参考文献
[1]教育部软件工程学科课程体系研究课题组.中国软件工程学科教程[M].北京:清华大学出版社, 2005.
[2]Martin R G著.邓辉, 译.敏捷软件开发—原则、模式与实践[M].北京:清华大学出版社, 2003.
[3]Schwaber K, Beedle M.Agile Software Development WithScrum[M].Prentice Hall, 2001.
[4]Kent Beck.Extreme Programming Explained:EmbraceChange Pearson[J].2003.
[5]Kniberg H著.李剑, 译.硝烟中的Scrum和XP—我们如何实施Scrum[M].北京:清华大学出版社, 2011.
[6]张扬, 黄厚宽.测试驱动开发及开发实践[J].计算机技术与发展, 2006, 16 (5) :75-77.
极限编程课程教学研究 第3篇
SEI为了解决在实施CMM方法中的问题,于1994年和1999年分别提出了PSP和TSP,用来帮助软件企业实施CMM。而CMM的一个缺陷就是尽可能早地把需求全部确定,但实践证明这是不合实际的。面对不断变化和模糊不清的用户需求,极限编程(XP)应运而生,然而它也有其本身的缺陷。XP是从技术层面来看软件开发,CMM则是从组织过程改进(管理)层面来看软件开发,两者各有侧重点,实际的软件研发中需要两者兼容,本文考虑把XP与TSP进行有机结合用来改进实施CMM的软件过程。
2 TSP概要
群组软件过程TSP致力于开发高质量的产品,建立、管理和授权项目小组,实施集体管理与个体管理相结合的原则,最终目的规划和管理小组项目,以预定的费用生产出高质量的软件产品。
TSP结合了CMM的管理方法和PSP的工程技能,通过告诉软件工程师如何将个体过程结合进小组软件过程,并将后者与组织进而整个管理系统相联系;通过告诉管理层如何支持和授权项目小组,坚持高质量的工作,并且依据数据进行项目的管理,向组织展示如何应用CMM的原则和PSP的技能去生产高质量的产品。
设计TSP过程时有7条原则:
1)在PSP基础上建立简单框架:结合PSP的工程技能,将个体过程结合进群组软件过程。
2)迭代开发:在每一阶段开始,要做好工作计划。如果发现未能按期按质完成计划,应立即分析原因,以判定问题是由于工作内容不合适或工作计划不实际所引起,还是由于资源不足或主观努力不够所引起。
3)建立标准的质量和效率测评机制:开发小组应随时追踪项目进展状态并进行定期汇报,应经常评审自己是否按PSP的原理工作。
5)角色分派和小组评估:它强调小组成员间的协作,而不是把所有的管理任务都压在组长身上。
4)准确评价小组和成员:TSP将小组成员分为5种角色(小组领导、开发经理、计划经理、质量/生产经理、技术支持经理),每个小组成员担任其中一个角色,角色可以相互转换。
6)过程规范:开发小组成员应按自己管理自己的原则管理软件过程,如发现过程不合适,应及时改进,以保证用高质量的过程来产生高质量的软件。项目开发小组则按集体管理的原则进行管理,全体成员都要参加和关心小组的规划、进展的追踪和决策的制定等项工作。
7)提供指导:指导他们如何在满足计划费用的前提下,在承诺的期限范围内,有效地规划和管理所面临的项目开发任务,指导软件开发队伍不断生产并交付高质量的产品。
一般来说,TSP把开发过程分为7个阶段,分别是:策略、计划、需求、设计、实现、测试,维护。这7个阶段是个迭代的过程。
在策略阶段,我们需要创建一个概念性的设计,确定每个迭代周期开发哪些功能,根据PSP的历史数据对产品的规模和开发时间进行一个初步的估计。在计划阶段,我们需要将对第一个开发周期的估计以及相应的测试计划、需求分析等的规模估计信息填入规模表,填写工程师和小组的任务和时间安排表,制订质量计划。在维护阶段则使用结构化的方法,比如写周期报告和进行角色评价来识别那些需要改进的地方,并做出需要的改变[1]。
3 XP概要
XP注重的核心是沟通、简明、反馈和勇气。因为知道计划永远赶不上变化,XP无需开发人员在软件开始初期做出很多的文档。XP提倡测试先行,为了将以后出现bug的几率降到最低。
XP的目标是在最短的时间内将较为模糊、变化较大的用户需求转化为符合用户要求的软件产品。XP的基本约定是,客户和开发人员应协同工作,以创建出有实际价值的软件。在整个项目的周期内,客户都将积极参与,客户指导开发小组在整个XP项目的生命周期中如何提供业务价值。概括地说,XP项目涉及到将客户的产品预想划分为发布,然后将发布划分为迭代。规划是一个不断演化的过程,在项目的整个生命周期中将被不断地改进和调整。
XP由4部分组成:价值、原则、行为和实践。其中价值包括简单、交流、反馈和勇气4种;5项原则为快速反馈、简单性假设、逐步修改、拥抱变化和高质量的工作;行为则包括倾听、测试、编码和设计。
XP提出12种实践,这些实践之间紧密联系,每一种实践的弱点可由其他实践的长处来弥补,分别是计划博弈、小型发布、系统隐喻、简单设计、测试驱动、重构、结对编程、集体所有权、持续集成、每周工作40 h、现场客户及编码标准。
在所有的敏捷方法中,XP对日期产生的兴趣最多,并且在对良好定义的问题领域(小规模、协作的团队)的特殊实践方面最为具体[2]。
4 把XP思想应用于TSP实践中
从时间上看CMM是1991年提出的,到1994年SEI才发布PSP,提供了对于个体而言实现CMM所必备的具体知识和技能。TSP和XP都是于1999年正式发布的,相互之间有一定的借鉴,但在许多观点上还是有很多不同之处。下面按照软件开发的顺序,讨论如何将XP思想和TSP实践结合使用。
4.1 规划阶段
TSP通常会要求对3~4个月的开发工作进行规划,做出规模、资源以及进度估计。而现实情况往往是由于各方面的原因导致需求的多变性,结果导致以前的计划和估算变得作废,同时浪费了大量的时间和人力。当软件开发需求的变化无常时,软件设计会出现坏味道,当软件在规划阶段里出现这种气味时,表明软件正在腐化。采用XP的计划博弈可以有效地克服TSP的这个缺陷。我们可以只对最近的1~3个迭代(2~9周,根据项目小组自身的情况而定)用TSP的方法进行细致的规划,这样既可以有一个立即可用的计划,又可以避免由于变化带来的规划时间的浪费。
4.2 需求阶段
TSP虽然在这需求阶段强调了最终用户的作用,但强调得还不够,在具体的需求分析过程中,由于客户没能一直守候在设计师和分析员身边,一旦有需求不是很明确的地方,往往系统设计师、软件设计师会一意孤行地去揣度客户的意思,这将导致设计师们是站在自己的角度而不是用户的角度去审视系统,即他们会自作主张地理解客户的需求,结果却大相径庭。XP提出的现场客户正是解决这一问题的关键。XP把客户代表也融入到团队,客户与开发人员、测试人员一起工作在一个开放的场所中,他们是同一个团队的成员。XP通过加强客户的反馈来缩短开发的周期,同时获得足够的时间来改变功能和获得用户的认同,这正好体现了XP的核心价值之一。
4.3 设计阶段
TSP和XP都提到了通过迭代来简化初始设计,把功能分到不同的迭代周期去完成。XP依靠变化来获取活力。团队几乎不进行预先设计,因此,不需要一个成熟的初始设计。他们更愿意保持设计尽可能的干净、简单,并使用许多单元测试和验收测试作为支援测试为先,后来这一观点渐渭演化为测试驱动开发,这是XP的12个实践之一。在这种情况下,测试是客户需求的直接表现,是客户对软件过程的理解。测试(单元测试)不是作为质量保证手段而是作为设计手段而得到应用。通过编写测试用例来建立软件的整体架构,然后根据实现代码是否能通过这些测试用例来确定它们是否完成了设计中的功能。编写测试用例也可以帮助软件工程师更清晰地理解客户的需求,因此,编码前编写测试用例不但可以提高产品质量,更重要的是提高了设计质量。这保持了设计的灵活性、易于理解性。团队利用这种灵活性,持续地改进设计,以便于每次迭代结束生成的系统都具有最适合于那次迭代中需求的设计。
4.4 实现阶段
在这一阶段,XP可用于TSP的核心实践最明显的当数结对编程和代码共享了。结对编程有4项好处:1)老手带新手;2)不同的思想碰撞会产生好的设计;3)持续代码复查;4)代码共享防止人员流失带来的空白。实践也证明,结对编程只会增加15%的编程时间消耗,而非100%,但可以减少15%的缺陷,因此减少了测试阶段的时间损耗,总体成本下降。TSP和XP都强调了编程标准的重要性,因为一个共同的编码标准确保小组的所有代码看来都一样,这种一致性将使代码检查更容易、迅速且有效。代码复查是提高软件质量的根本途径,结对编程是通过所有的产品软件都是由两个程序员、并排坐在一起在同一台机器上构建的,通过这种方式实现了持续的代码复查。
4.5 测试阶段
关于测试,TSP提出的观点是非常正确的,那就是测试(集成测试和系统测试)的目的是为了评估产品,而不是为了修正它。当在这两个阶段发现过多的缺陷,说明产品的质量很有问题,已经不是修补这些缺陷就能解决的了。被检测出的缺陷越多,残留的潜在缺陷也越多,因此测试并不是提高产品质量的根本方法。XP提出的测试驱动开发和持续集成则可以帮助提高设计质量,及时在单元测试阶段就找出绝大多数缺陷。
4.6 维护阶段
TSP在维护阶段要做的主要之一是软件过程的改进,即重新审视在前面这些阶段你所做的事情,找出缺憾,总结经验,成为可复用的过程。第二就是重构,重构是极限编程先测试后编码的必然需求,为了整体软件可以先进行测试,对于一些软件要开发的模块先简单模拟,让编译通过,到达测试的目的。然后再对模块具体“优化”,所以重构包括模块代码的优化与具体代码的开发。重构是使用了“物理学”的一个概念,是在不影响物体外部特性的前提下,重新优化其内部的机构。这里的外部特性就是保证测试的通过。
5 实践
应用敏捷方法开发营业收费系统(简称YYSF),能有效控制需求变更和客户对开发过程的透明性带来的风险。但在应用敏捷方法时,不能照搬敏捷方法的过程实践规则,必须结合项目、企业文化和团队的实际情况,并进行适当的裁减和增补。笔者曾组织团队应用敏捷方法成功开发了项目,下面结合笔者的实践经验简单介绍一下敏捷方法在项目开发中的实践应用和改进。
5.1 项目背景
项目是某供水集团公司定制开发的项目,涉及的范围比较广,其主要模块包括系统管理(包括日志管理、系统用户管理等6个子功能)、客户管理(包括客户管理和报装申请两个子功能)、抄表管理(包括抄表数据录入、水量管理等4个子功能)、收费管理(包括销帐管理、预付款管理等8个子功能)、决策支持(包括月度统计和单项统计两个子功能)、密码管理和退出系统。采用标准的三层架构(表现层、业务逻辑层、数据服务层)、B/S结构,C#编程实现的。
5.2 开发模式
应用敏捷方法里的XP和TSP技术的结合技术,整个项目开发采取“整体规划,分块业务平台分阶段实施”策略,即成功一个上线一个,以降低开发风险同时也满足客户迫切的应用需要。对公司业务全面调研分析,并进行流程优化或再造后,确定设计方案的基础上,分块业务平台分阶段实施。各业务平台在统一规划下应用XP与TSP有机结合地方式进行开发。由于企业应用系统的架构相对比较稳定,便于先设计,所以根据敏捷思想,架构设计以简单为原则,利于各平台在开发模式上的统一。
5.3 需求挖掘
在开发中,按照敏捷方法采用素材卡片来记载客户需求和安排迭代开发。分多次挖掘和确认需求,第一次是对公司所有相关业务进行全面调研分析,得到需求素材进行流程优化和再造,确定设计方案。第二次是在确定设计方案后,在业务平台开发前对相关业务的工作流程和操作细节进行详细的调研分析,形成相对比较完备的功能需求,作为后面制定迭代开发计划的依据最后在每次迭代开发过程中把客户融入在团队中,便于进行交流、反馈,进一步完善功能需求,这正体现了XP与TSP结合的一方面。
5.4 团队组织
敏捷方法采用现场客户机制,但在实际开发中并不现实。我们这里采用一种改进的极限编程方式--“编程三人组”:每个业务平台的开发,由客户、分析人员和设计编程人员联合组成开发小组。一个客户可以“兼职”到多个“编程三人组”中,而另两个人则有专业开发人员组成,相对固定。在每一个开发小组中,由“兼职”的客户和分析员确定业务功能,制定迭代计划和迭代内容,在开发过程中,由分析员承担现场客户职责,开发人员进行集成、验收测试。
5.5 软件质量控制
1),规范代码:敏捷方法非常重视代码规范,要求做到“once and only once”。在系统开发中,预先制定文档,代码书写规范,并在设计过程中严格执行,这也是TSP方法里严格执行得一点。
2),严格测试:敏捷方法强调测试驱动。在迭代计划中书写测试计划,开发人员在设计功能模块时先设计模块测试方案和用例,并由开发人员进行单元和集成测试,客户进行验收测试。我们在实际操作过程中,在开发人员设计模块测试方案和用例时,客户同样的起了举足轻重的作用,测试是客户需求的直接表现,是客户对软件过程的理解。根据实现代码是否能通过这些测试用例来确定它们是否完成了设计中的功能。团队利用这种灵活性,持续地改进设计,以便于每次迭代结束生成的系统都具有最适合于那次迭代中需求的设计。这是把XP思想融入到TSP实践的一个具体表现。
3),文档完备:虽然敏捷方法不注重文档,但由于营业收费系统的完善性维护工作比较多,业务的扩展要求系统增加新功能。如果文档不完备,势必影响到后期的完善性维护工作。所以在本系统开发中书写了相对必要的文档。开发中根据计划进行简单设计,书写初稿开发过程中逐渐补充、丰富文档。另外在代码重构时有相应的重构文档,在模块集成时也相应的集成文档。项目完成时由开发人员负责文档质量管理。
5.6 开发过程控制
应用敏捷方法XP与TSP结合的思想进行YYSF开发的工作流程如图2所示,其中制定发行版计划是整个过程的关键。它以需求用例为基础,根据需求优先级和开发风险,计划分几次迭代开发,逐步实现客户的功能需求,每一次迭代开发都是在上一次基础上再进行功能需求的扩充和完善。在开发顺序上一般先主业务功能或开发风险较大的功能需求,一次迭代开发工作量不宜过多,一般控制在2-3周。在开发过程中通过迭代计划会、碰头会、总结会等形式加强沟通,并实现代码共享。最后在功能验收通过后,对代码和文档进行重构、补充和完善。
6 结论
XP的多数实践都可以在CMM的实施中得到应用,从而达到提高软件开发质量和加快软件开发速度的作用。我们在开发商业软件给排水营业收费系统中同时应用了TSP和XP的方法,得到了比较理想的效果。当然,就XP本身而言,它也只是以前各种方法引伸至极限而产生的一种软件开发方法,还有许多值得改进的地方。
摘要:群组软件过程(TSP)是软件行业里实施CMM的主要软件过程之一,属于“重”型的软件开发方法。极限编程(XP)则是一种轻量级的对质量和速度并重的软件开发方法,是敏捷方法中的主流。在阐述了TSP、XP的基本概念后,提出在TSP的应用过程中加入XP的思想,实现XP与TSP的有机结合,提高中小软件项目的开发速度和质量。
关键词:TSP,PSP,XP,CMM,Agile
参考文献
[1]杨善林.极限编程在PSP、TSP实施中的应用研究[J].计算机应用与软件,2007(1).
[2]Highsmith J.Agile Software Development Ecosystems[M].Beijing:China Machine Press,2004:15-18.
[3]张敬周,钱乐秋,朱三元.Agile方法研究综述[J].计算机应用与软件,2002(6).
极限编程课程教学研究 第4篇
一、极限编程的提出及其特点
伴随着全球信息化和经济化的潮流的影响,在世界范围内的软件开发发生了巨大的变化,传统上的软件开发由于软件需求的变化大、人员变动性等原因造成了软件开发效率低、周期长,无法满足需求快速变化的要求,不再适应于现在商业信息经济时代中的急剧的变化。因此,改变传统软件开发模式,提高软件开发的效率成为了软件开发人员研究的重点。20世纪90年代初,Kent Beck,Cunningham,Jeffries等人构建称之为极限编程(extreme Programming,简称XP)的基本元素。极限编程就是针对快速改变的软件需求而产生的。简单而言,极限编程就是一个高速迭代的过程。
XP是敏捷编程方法的代表,是一种典型的“轻量级”软件开发方法,它强调了3条基本价值观,即沟通、简单、反馈。不同于以往的软件开发理论的是,它没有对软件开发的整个过程进行强制而繁琐的规定,而是给出了一套在实际软件开发过程中需要遵守的活动实践原则。极限编程通常采用小组软件开发的过程和组内结对编程的方式。其中结对编程是两个软件开发者在一台电脑前一起工作的一种编程实践,是极限编程方法的基础。而小组软件开发的过程则提供了在开发过程、产品和小组协同工作之间平衡的重点,并且在规划和管理软件工程中利用了广泛的工业经验基础。小组软件开发基于以下几个基本原则:遵循订制好的过程,并且得到快速反馈时,学习是最重要的;高产的小组协同工作需要有具体的目标、良好支持的工作环境和强有力的指示及领导等因素的结合;从彻底有效的开发练习中获得与工程中的实际问题作斗争的有效解决方案;提倡正确的指导源于先前实践的重要性。
二、极限编程在计算机实践课程中的应用
在计算机实践教学中,进行软件开发训练的时间往往定时,受限于教学时间。极限编程是一种限时性的软件开发方法,它可以有效地解决实践中软件开发设计中的时间不足的问题。在另一方面,它强调简单化设计的理念、循环渐进的周期性过程有利于简化目标的难度和复杂性,有利于设计的不断优化,大大地提高了实践教学的效率。
1、建立起具有挑战性的可量度的目标
它提供了一个在个人软件开发过程(PSP)基础上建立的简单框架,提供了许多规范和程序,但绝大多数都类似于PSP中使用过的东西。以周期划分产品的开发,提供了一定的时间内完成若干个开发周期的方法。每个周期都由七个步骤:决定策略、进行计划、考虑需求、设计、执行、测试和最终检查组成,包括了一个完整的需求、设计、实现和测试开发过程。这有效地控制项目的难易程度,解决了课程的严格时间表和因实际需求不稳定经常变化引起时间耽误之间的矛盾,提供了一个科学的软件开发过程。
2、建立共同工作框架,通过沟通,反馈进行有效的组内和对外交流。
小组间的比较可以体现出不同计划步骤各自的优越性,为小组评估提供了参考。
通过小组划分的方式,以4-8人为一个小组,共同完成和管理一个软件项目。以明确完成的任务为目标,参照共同的工作框架,包括:计划、时间、顺序、责任人对项目进行至始至终的有效控制。采用组内学生之间以结对编程的方式相互探讨,培养和强调学生之间的沟通,反馈意识,共同学习,协同工作。这可以一方面引发学生自主地意识到提高程序可读性可理解性的重要性,使得其对程序设计规范化的深刻理解。另一方面小组各成员共同参与对软件需求、可行性的分析,整体功能结构的划分,进度安排、计划的设计执行,模块化结构的设计,亲身体验整个工程的管理和责任划分的过程。
3、采用了多周期的循环开发战略、计划跟踪和反馈有利于对目标进展过程的控制。
它从一个最小规模的产品版本开始,建立起一个最终产品的最简化的子集,首先使核心产品运行起来,然后通过循环开发战略,在每次得到了最终产品的可运行前期版本同时,也得到了获得下一周期目标的精确计划和为后续的每个周期服务的平台。在课程中,可根据具体的教学时间,通过控制开发周期,来确定软件的设计规模和开发深度。这有效地控制了软件开发的大小和时间,并以可运行的成果消除软件开发过程中失去目标的盲目性,增强了学生的信心,从而为小组工作提供有力的支持。
4、在多周期的过程中采用了大量的角色分配和角色责任,提供了各种角色体验。
以角色体验的方式解决了在实践教学过程中一味地以编程为主的教学模式,而忽视软件开发过程中的工程管理及控制等方面的问题,给学生提供了学习运行一个小组工程方方面面及小组处理工程管理任务的机会。与此同时,角色责任细化了个人在软件开发中的分工,有助于每个人专注于个人需要学习的要素。在实践过程中以周期为单位,在每个周期中小组各个成员各自承担角色的任务,而在下一个周期中各成员可通过互换角色,使得各成员获得开发过程中不同角色的体验,有效地解决了在有限时间内多角色体验的问题。
5、它提供了一整套完整的标准化的质量和效率评估机制、开发纪律。
它采用“强调整个工作过程而不是个人表现得如何”的评价标准,提供了一个可实施的平等的角色和小组评估体系。通过纪律约束来协调成员之间的工作,并为小组协同工作的问题提供指导,促进小组成员间的学习经验交流,为进行一致的高质量的工作提供重要的支持。通过对目标和评测的强调来进行项目的规划和跟踪,方便管理日常工作,提高软件开发效率。在实践中可参照标准化的质量和效率体系制定出与所开发软件相适应的角色责任和小组评估表,通过组间相同角色对质量表的完成程度进行比对,获得实践总结,同时强调了小组的协同性和整体效率最优化的团队机制。这大大地改变了实践教学中以个人为主的开发模式。(下转第64页)
(上接第66页)
三、小结
极限编程思想的提出是软件设计开发与商业化结合发展过程中的一个重要的里程牌,它为软件开发提供了科学的计划和管理,极大的提高了软件产业的效率和质量。在信息急速发展的时代,课程教学也在不断地与时俱进,如何解决信息课程中实践教学环节中的问题也显得日益突出,极限编程无疑为信息教学尤其是在实践应用上提供了一个有效的改进方法。
摘要:极限编程(XP)是流行的敏捷开发方法之一。它是一种适应于中小规模团队的轻量级、灵巧的软件开发方法。它所具有的良好的适应性、目标的可量度、周期性的划分等诸多方面优点使得将其方法引入计算机实践中应用成为可能。极限编程方法的运用为计算机实践教学提供了一个有效的改进途径。
关键词:极限编程(XP),结对编程,小组软件开发
参考文献
[1]Kent Beck.解析极限编程——拥抱变化(第二版)[M].雷剑文,陈振冲,李明树译.北京:电子工业出版社,2006.
[2]RobertMartin.敏捷软件开发:原则,模式和实践[M].邓辉译.北京:清华大学出版社,2003.
极限编程课程教学研究 第5篇
关键词:极限编程XP,敏捷开发,测试
0 引言
传统的软件项目开发一贯地强调规范的文档,持续改进的软件开发过程,这在很大程度上将软件开发的风险变得比过去小得多。但是,事物的发展总有其两面性。在大型软件的开发中,规范化的文档和繁琐重叠的软件开发过程是第一位的,这样才能使软件项目的风险在项目经理的掌控中。可是,另一方面,在中小型项目开发中,由于项目小,资金少,人员少,如果按部就班的根据软件开发的一般过程来开发,几乎是不允许在建立文档、计划和报告上花费过多的人力物力,而且在时间方面也是不现实的。而极限编程(XP)方法的运用更为实际。
1 敏捷编程与极限编程(XP)的原理
1.1 敏捷编程
敏捷(agile)软件开发方法是一种近几年来新兴的软件开发方法,它的主要特征是允许对过程进行自主调整,并且强调软件开发中人的因素,和传统开发方法有着很多不同。Agile强调软件要比文档更重要,对于已经完成作用的中间产物,没有必要付出额外的维护成本。Agile采用高效的沟通渠道,通过增强沟通的效果来减少对中间产物的需要。
1.2 极限编程(XP)
极限编程(XP)是敏捷(agile)编程中的一种重要的轻量级的软件开发方法论。XP从实践中来,是对实践的总结,也是经过实践检验的。其主要特征是要适应环境变化和需求变化,充分发挥开发人员的主动精神。极限编程(XP)的开发理念和内容如图一所示,从内到外是核心价值、基本原则和最佳实践。
2 极限编程(XP)在教务管理系统测试阶段中的应用
基于校园网络环境的教务管理系统以教务处的管理工作为背景,实现对教师排课教室、时间、课程和班级、考试成绩等信息的录入、查询、统计等功能,并通过多种措施保障系统的安全性、易操作性和灵活性。系统充分利用校园网,实现了全校范围内的教务信息共享与部门协同工作。该系统是一个中小型的项目,一方面由于客户对需求的定义很模糊,项目周期也很紧;另一方面由于学校规模的扩大和学生专业的变动,使得系统的需求有可能面临变更的问题。考虑到种种原因,项目小组决定利用极限编程(XP)去开发该项目。
下面结合开发过程,讨论极限编程(XP)的在测试阶段的具体应用,其主要应用步骤如图二所示。
2.1 测试隔离
不同代码的测试应该相互隔离。对一块代码的测试只考虑此代码的测试,不考虑其实现细节,在这里要充分体现极限编程的核心价值之一简单。
2.2 测试范围
测试范围没有固定的标准,同时也应该可以随着时间的变更而改变。在测试之前,编写好供测试的功能代码,而后在测试阶段工作中,随着错误的出现,可根据错误补充相关的测试用例。
2.3 测试列表
对于系统框架的核心类设计过程中,项目小组采取了TDD的方式进行开发。为了避免疏漏,也为了避免干扰当前进行的工作,将需要测试的功能点添加到测试列表中,再继续手头工作,不断完善对应的测试用例、功能代码、重构。
2.4 交叉审核
由一名核心开发人员进行系统框架的设计,其它人员进行审核。在系统框架设计进行过程中,将项目核心部分教师排课模块交与技术经理进行分析与设计,考试成绩等辅助模块分配给其他开发人员。开发人员在每个迭代周期内,在完成分析与设计后,每两人一组进行审核。
2.5 测试迭代
在每个开发人员的模块完成并通过个人的功能测试后,测试人员进行集成测试,同时编写测试脚本,并通过自动测试工具进行记录。每天工作结束之前,测试人员会启动测试工具,进行回归测试。在第二天向项目经理提交测试报告并将错误提交至Bug Trace系统,将错误分发给每个开发人员,要求在下一个迭代周期完成前,修正前一个迭代内分配的错误。
2.6 持续集成
在测试先行的基础上,开发小组平均每天都会进行已经完成模块与以后系统的集成。
2.7 小步发布
项目有专门的测试与发布服务器,每天都有集成的系统在运行和接受测试。由于客户通常没有时间,对于已经发布的系统,是由“客户领域专家”(由一位有教务管理经验的人员来充当这个角色)来进行审查的。他对于系统的意见和发现的问题,在经过审核后,录入ClearQuest,分配给开发人员进行修改。
3 结束语
由于极限编程(XP)方法是近几年才兴起的一种新型的开发方案,在国内的应用和经验都不足,而且XP理论本身仍然处于完善和改进的阶段。在本案例中,并不是将整个XP理论生搬硬套地应用到开发过程中,而是根据项目的实际情况,取其几个主要方法应用在测试阶段。随着开发进程的推进,应根据实际情况,甚至对XP的一些方法进行改良。
参考文献
[1]张友生.系统分析师技术指南[M].北京:清华大学出版社,2007,1.
[2]李白桦.学生管理信息系统的敏捷开发[J].大连铁道学院学报,2006,(12).
[3][美]Kent Beck.Martin Fowler著.曹济译.规划极限编程[M].北京:人民邮电出版社,2002.
极限编程及其应用 第6篇
传统软件工程中的软件开发过程要求在开发初期确定用户的完整需求, 但在具体开发实践中, 人们发现早期定义的需求往往不能完全符合客户的实际需要, 这种开发方法在当代这种需求不确定性大, 且开发时间短的开发实践中显得越来越无力, 开发者根据用户提出的需求不断修改程序, 不但延长了软件开发周期, 还大大提升了软件的开发成本和风险, 很多企业的软件开发团队陷入了开发过程不断增长的泥潭。为了解决这个问题, 业内专家们一起总结出一些能让软件开发过程具有高效且能迅速响应需求变化等特点的价值观和原则, 这就是敏捷开发思想。极限编程 (Extreme Programming, XP) 是敏捷开发方法的代表, 它是一种混乱而又有序的开发实践方法, 利用较短的迭代周期来响应需求的变化。
1 极限编程
1.1 XP简介
极限编程方法是由Kent Beck提出的, 他从90年代开始一直寻找一种能使软件开发更加简洁有效的开发方法, 他在认真分析比较了各种简单、快捷的软件开发方法的前提、有效性及局限性后, 终于在1996年3月提出了极限编程开发方法并应用于项目中[1]。极限编程是一种极为严格的、经过实践考核的轻量级软件开发方法, 是敏捷软件开发方法中的典型代表。在极限编程开发过程的每个阶段都以代码为中心, 侧重于客户参与、精炼设计、频繁测试, 快速反馈、持续性的整合、重构等, 以便在开发过程中尽量早地发现错误并及时纠正。
1.2 XP价值观
1.2.1 强调个人与交互, 弱化过程与工具
软件开发团队是由人组成的, 软件是开发者的脑力劳动的结晶, 因此要进行高效地开发, 各开发人员及客户必须进行有效地沟通并工作在一起。
1.2.2 强调软件开发工作, 弱化详尽的文档
软件开发的终极目的是得到可运行的软件, 而不是文档;因此有些文档不必要花费大量的精力去制作, 规规矩矩的软件工程思想反而逼迫开发人员不得不加班加点。
1.2.3 强调与客户协作, 弱化合同谈判
软件的服务对象是客户, 只有客户满意的软件才是开发成功的软件, 因此开发人员应与客户紧密联系, 不断的引导客户表达并理解需求。
1.2.4 强调及时响应变化, 弱化遵循规则
随着软件开发工作的进行, 各相关人员对正在开发系统的理解都可能发生变化, 因为环境、时间都在变, 所以变化是软件开发中不可避免的事实, 软件过程必须反映这个事实。
1.3 XP标准过程
极限编程的标准过程分为两个阶段:设计和开发[2]。在第一个设计阶段中, 开发人员根据现场客户提供的用户事例明确软件的需求。以系统需求为基础, 使用系统隐喻规则说明系统如何实现、新的功能如何添加。在第二个开发阶段中, 采用周期迭代、测试驱动的开发模式, 首先编写测试脚本, 再使用结对编程方式完成编码, 最后进行测试。XP方法要求在开发过程中, 对系统持续集成, 反复的进行回归测试。XP标准过程如图1所示。
1.4 XP优势
XP思想是一种新兴的编程理念, 相对于传统的软件工程方法, 它具有以下的优势:
1.4.1 XP技术提出的小型发布能够及时的发现错误, 最大程度地缩小错误范围。
1.4.2 XP技术提倡迅速响应需求的变动问题, 尽可能减少因需求变动而带来的损失, 并且开发出的软件最大限度地满足用户需求。
1.4.3 XP技术倡导一周40小时的正常上班制度[3], 因为高强度的加班遏抑了软件开发者的创新能力和工作积极性, 从而给软件项目的开发进度或软件质量带来不利的影响。
1.4.4 XP技术提倡简单设计的开发理念, 可以减少开发者的工作量, 提升开发效率。传统软件工程学认为编码必须在设计完全结束后才能开始, 而实际上设计一般都存在着一些缺陷, 面面俱到的设计反而会造成开发进度的迟缓。因此XP技术为IT行业的软件开发创造了一种新的先进开发思想。
2 XP在考试管理系统中的应用
XP方法通过这几年的发展, 已经有很多小型的软件企业自觉或不自觉地采用这种编程技术, 但它一般适用于项目的分析和设计人员总数不超过10的中小型项目, 当软件项目较大, 参与人数较多时, 就不适宜采用XP开发方法[4]。因此, 本文以考试管理系统为例讨论XP模型在中小型系统中的应用。
2.1 项目概述
为了提高教师的工作效率及学生的学习兴趣, 开发一个考试管理系统, 通过对考试管理系统的功能分析, 要求系统具有以下功能:根据用户权限登录不同模块、管理员可以添加、修改和删除试题、管理员可以添加、修改和删除用户和考生、可以随机显示考题、能够自动阅卷、显示倒计时、可以查看成绩等。
2.2 项目开发过程中XP准则的实践情况
2.2.1 与用户充分沟通, 拟定开发计划
在开发中, 开发者首先同客户代表进行充分的沟通, 并站在用户的立场上思考明确系统的需求, 确定系统的功能模块划分。考试管理系统预计分为三个短周期, 每两周进行一次小型发布。第一个周期完成公共模块、系统登录模块、后台管理模块等三个模块;第二个周期完成系统管理、题库管理这两个模块;第三个周期完成考试模块、查看模块。每进行一次小型发布都要产生一个版本, 并同时提交给用户进行测试, 不断收集用户的反馈信息, 如操作方式、界面、格式支持等方面的修改意见, 以便在下个版本中及时纠正, 这样就可以避免开发出与用户需求不相符的系统。
2.2.2 结对编程
结对编程是XP方法中的一个重要规则, 它提倡两个人共用一台电脑, 共同完成同一功能模块的编码。在该项目中, 为促进知识在开发团队中的传播, 团队员工以一老一新原则进行搭配成对, 老员工负责控制计算机并研究编程细节, 编写输入代码, 新员工观察输入的代码并寻找代码中出现的错误和可以改进的地方, 以提高代码的质量和可读性。
2.2.3 团队共同拥有代码
在开发过程中, 开发者始终坚持XP中的“代码集体所有”原则, 它不仅是一种代码的共享, 更是一种知识的共享。所有成员的代码阅读权限一致, 不但拥有自己编写的代码, 也可以了解其他队员编写的代码。任何问题的解决都由团队全体成员共同讨论、修改。因此, 即使有团队成员离开也不会影响整个软件项目的开发进度。
2.2.4 持续集成、测试
软件开发过程中, 所有团队成员每天都把代码导入共享库, 每生成一个新版本都进行一次系统集成, 并由用户共同参与测试, 继续收集用户的反馈信息, 及时响应需求变更, 不断地进行回归测试, 以保证软件的可靠性。该项目经过6周的迭代研发后, 到最终版本发布时, 系统已经能在校园网上稳定地运行了。
本系统在开发过程中, 结合具体情况, 灵活应用XP提供的方法、原则, 找出适合本项目的软件开发模式, 充分注意了系统的安全性、实用性、灵活性。最终, 开发的系统中客户的需求均得以实现。
摘要:在传统的软件工程学中, 系统的分析、设计与实现在时间上先后分离, 这种分离常常导致开发的软件与预期不符甚至完全失败。因此, 敏捷软件开发方法应运而生, 极限编程就是敏捷方法中最著名的一种轻量级的、灵活的软件工程方法。
关键词:极限编程,XP,软件工程,软件开发
参考文献
[1]刘玲惠, 梁晓强.敏捷软件开发中的极限编程[J].产业与科技论坛, 2011, 10 (22) :77-78.
[2]易金刚.极限编程理论的研究[J].计算机时代, 2010, 06:01-03.
[3]傅恒切.传统软件开发与极限编程[J].中国外资, 2011, 05:286.
极限编程课程教学研究 第7篇
当今时代,国内有很多中小型软件项目开发时间紧迫,需求也经常发生变化,如果使用传统的软件开发方法,会导致开发资源浪费,甚至质量低下。敏捷开发方法为有效解决这种状况提供了良好的解决方案。其中,以极限编程XP(eX-treme Programming)最为典型代表。XP是一个基于实践的、混乱而有序的方法,它通过非常短的迭代周期来应对需求的变化。
笔者正在做一个Android手机情景模式自动切换的软件开发创新训练计划项目,虽然不敢与国内的那些中小型软件项目相比,但是,自己也主动尝试使用敏捷开发方法。虽有不到与不周之处,但也小有收获。
2 极限编程
在所有敏捷开发方法中,XP(eXtreme Programming)是最引人注目的,它适用于需求快速变动背景下的中小规模的开发团队。
XP所呈现的生命周期如图1所示。
2.1 极限编程的4个核心准则
(1)沟通:注意开发人员、设计人员、测试人员及客户之间的沟通。
(2)简单:尽量保持代码的简单,只要它能工作就可以。
(3)反馈:尽快获得用户的反馈意见,且越详细越好,使开发人员能够保证自己的成果符合用户的需要。
(4)勇气:最重要的核心价值。因为XP强调要“拥抱变化”,因此对于用户的反馈,要勇于对自己的代码进行修改,丢掉坏的代码。
2.2 极限编程的5个基本原则
(1)快速反馈:XP提倡尽可能早的迅速的反馈。
(2)假设简单性:XP倡导为完成今天的工作而工作,并不计划未来对软件的扩展。
(3)提倡更改:XP强调要“拥抱变化”,有快速的反馈,就应有对反馈结果的执行措施。
(4)递增更改:XP提倡小改动,用期望的功能逐步增强系统。递增更改应用在XP的诸多方面:设计、计划、团队等每次只改动一小点。
(5)优质工作:质量是最重要的。XP强调团队中的成员要对工作充满兴趣和信心,保持编程人员的最高热情和水平。
2.3 XP主要特点
最为一种轻量级方法论,XP明确放弃了系统建档和分析以外的任何外在活动。文档明确不予鼓励,编码才是最主要的活动。
基于测试驱动开发(Test-Driven Development,TDD)的思想,在编码开始之前将测试用例或者脚本设计好。
3 极限编程开发应用
3.1 发布计划
3.1.1 项目简介
开发一个软件,可以通过手机自带话筒收集手机周围的声音信息,通过软件对采集信息的分析和标示,选择默认设置或者用户预先设置里面对应的情景模式,进行模式的自动匹配选择和切换。本项目首先面向的对象是学生Android手机用户。
3.1.2 项目模块划分
XP是明确不支持文档的,只要设计出系统架构,各模块不必详细设计,在测试驱动的开发中进行完善。本项目模块划分如表1所示。
3.2 开发
开发过程中主要分为以下过程:
3.2.1 模块基本功能实现
在该阶段,团队队员进行分工,独立编写模块。由队长搭建模块架构,确定模块之间相互传递数据时的数据结构定义以及各模块函数命名等。规定各模块输入值和预期输出值。
3.2.2 模块整合
按照主函数的结构安排,插入各模块的功能函数调用部分。对变量、结构体等进行初步检查,防止同名变量的影响。
3.2.3 测试驱动
可以全部团队的人员(团队人数在3-4人时)加入测试设计和代码修改的过程中,避免忽略细节,同时也可以避免沟通不畅带来的不必要的麻烦。
对于不同的环境输入,进行运行过程和结果测试。
测试的典型环境选取、环境特点和测试内容表示如表2所示。
使用语句覆盖测试、分支覆盖测试、条件覆盖测试、谓词覆盖测试、路径覆盖测试、边界值测试、特殊值测试等单元测试方法,对代码进行测试和修改。消除代码错误,完善代码实现功能。
3.3 应用经验
(1)个人创新:为实现新技术的突破,解决遭遇到的许多新挑战、新困难,团队中的每一个人都需要创新意识。
(2)统一与一致:只有和所在团队规定的格式一致时,才能方便地对其他人的代码的理解。
(3)减少文档:对于小规模团队而言,直接的交流和沟通才是最有效的。
(4)民主和荣辱与共。
参考文献
[1]朱少民,左智.软件过程管理[M].清华大学出版社,2007.4.
[2]易金刚.极限编程理论的研究[J].计算机时代,2010,6.
[3]B.Kent.Test-Driven Development:By Example[M].Pearson Education,Inc,2003.
[4]F.Michael.Working Effectively with Legancy Code[M].Prentice Hall,Inc.,2004,10.
极限编程课程教学研究
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。


