论敏捷软件开发和极限编程

(整期优先)网络出版时间:2021-11-01
/ 2

论敏捷软件开发和极限编程

肖凤春

( 贵州城市职业学院 贵州贵阳 550025 )

摘要:随着国家工业信息化发展战略和“互联网+”战略实施推进,开启全面建设社会主义现代化国家新征程,加快推动数字产业化和推进产业数字化转型,传统软件开发过程和软件维护方法已经不能满足国家发展所需软件日益增长需要,只有走敏捷软件开发之路,才能开发出满足客户功能需求和适应客户业务需求不断变化的软件服务产品。

关键词:软件工程;敏捷软件开发;极限编程


随着国家工业信息化发展战略和“互联网+”战略实施推进,开启全面建设社会主义现代化国家新征程,加快推动数字产业化和推进产业数字化转型[1] ,加快推动数字产业化主要培育壮大人工智能、大数据、区块链、云计算、网络安全等新兴数字产业,提升通信设备、核心电子元器件、关键软件 等产业水平[1],适应国家战略转型和行业发展升级的软件需求和软件规模越来越大,传统软件开发过程和软件维护方法已经不能满足国家发展所需软件日益增长需要。

一、软件危机与软件工程

随着国家工业信息化发展战略和“互联网+”战略实施推进,软件产业软件需求和软件规模越来越大,传统软件开发过程和软件维护方法已经不能满足国家发展软件日益增长需要,随着软件产品软件规模增大,软件复杂性呈指数级上升,软件企业多人协同完成的软件产品能够满足用户功能需求是一件非常困难的系统工程,导致软件企业提供软件产品大多出现软件危机[2] ,主要表现在以下方面:

  1. 由于专业知识领域不同,软件开发人员不懂用户业务领域知识,用户不懂软件开发人员描述的专业术语,软件开发人员和用户沟通交流困难,导致软件需求难以精确描述和定位。

2.由于软件复杂特点,软件开发进度计划难以制定,已经制定的计划难以有效实施,常导致软件开发项目进度延期,成本增加;

3.由于软件复杂特点,所开发交付用户软件产品难以适应用户不断变化需求,适应性维护困难,不能满足用户业务发展需要。

4.由于软件复杂特点,软件开发过程不规范或难以规范,只注重开发,不注重测试,缺少有效软件评测方法和手段,导致最终软件产品不能满足用户有效雪球,软件产品质量差。

为应对软件危机,北大西洋公约组织提出软件工程概念,按工程化的原则和方法组织软件开发过程,采用工程化的观点、原理和方法进行软件产品的开发和维护,把经过实践证明正确的诸多成熟工程管理技术和当下最好技术手段结合起来开发软件产品,使得软件危机大大缓解。

二、敏捷软件开发

使用软件工程技术按照工程的观点开发软件产品,使得软件需求和软件产品开发供给矛盾和软件危机都有所缓解,但随着软件规模的进一步扩大,人们发现软件工程方法开发软件过程、工具和方法流程过于死板、不够灵活,软件企业提供软件产品还是不能满足用户功能需求,软件产品在适应用户业务需求变化上更是显得力不从心,为了使软件开发团队具有高效工作和快速响应变化的能力,2001年2月多名软件专家提出敏捷软件开发(Agile software development) [3],。敏捷软件开发是一种适应软件产品开发过程中需求变化的软件开发能力,主张软件开发过程中用户业务专家和软件开发团队开发人员之间的协同配合,把用户业务专家也视同软件开发团队成员,主张软件开发过程中软件开发团队开发人员和用户业务专家实时面对面的沟通,主张软件开发过程中频繁交付更新的软件版本,主张软件开发团队紧凑而自觉协同,软件开发过程中更注重人的作用。软件开发过程“中个体和互动高于流程和工具,工作的软件高于详尽的文档,客户合作高于合同谈判,响应变化高于遵循计划[3] ”是敏捷软件开发的四个核心价值观。

三、极限编程

敏捷软件开发价值观主动拥抱用户业务变化需求,使得软件开发和交付的软件产品满足用户功能需求和适应用户业务需求发展,敏捷软件开发过程主要是

极限编程(ExtremeProgramming,简称XP),极限编程是一种灵巧、轻量和更注重人的作用的软件开发方法,极限编程是一种紧密配合和严谨的软件开发方法。极限编程的价值观和基础和是交流、简单、反馈和勇气。极限编程使得任何项目都从“加强交流,力求简单,鼓励反馈;勇于实事求是”四个方面入手进行开发和迭代。极限编程强调客户也是软件开发团队成员,主张开发过程中开发团队成员针对用户功能需求、开发进度、项目风险等问题实时和客户积极沟通解决,极限编程把复杂的软件开发过程划分为各个个相对独立、简单的小周期,软件开发过程中团队成员通过积极交流、积极反馈以及结对编程等一系列方法,使得开发过程按功能需求有序透明推进。

极限编程的有效实践主要包括:软件开发团队成员包括开发人员、客户、测试人员等工作在一个开放的场所中,最好是一个能容纳全部团队成员的大的房间。这个房间里挂着与项目相关的大幅、显著的图表以及项目开发进度等东西;开发人员为下2周估算开发软件产品功能成本提交客户决策;对于软件茶品功能特新,客户定义出自动验收测试;软件开发人员保持设计恰好和当前客户定义的系统功能自动验收测试相匹配;软件产品所有软件模块代码都由两个程序员坐在一起在同一台机器完成;编写单元测试以尽量短的循环周期工作,至到客户定义的自动验收测试通过为止;开发团队任何人都可以重构前面代码,但要保持代码尽可能简单并且通过客户定义的自动验收测试;系统中所有的代码看起来就好像是被单独一人编写的;尽量多地发布软件更新版本;软件开发团队能够以长期维持的速度努力工作,每周5天工作制不提倡加班。极限编程强调把各个有效实践发挥到极致、做到最好。

总之,软件产品要适应在软件规模越来越大且用户需求不断变化的今天和未来,对比传统的软件项目开发模式,只有走敏捷软件开发之路,才能开发出满足客户功能需求和适应客户业务需求不断变化的软件服务产品,在敏捷软件开发过程中,极限编程强调把它列出的每个实践做到做到最好、做到极限,其它极限编程所不提倡的实践一概忽略。

参考资料】:

【1】《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》 [R]2014年3月

【2】《软件工程概论》李彤 王炜 郁湧编著 [M] 2012年2月第一版.

【3】《敏捷软件开发宣言》[S] 2001年.


3