当前位置: 首页 > article >正文

敏捷软件开发

随着软件规模的不断扩大、软件涉及的领域越来越广,客户对软件要求也越来复杂,这一点的最直接的体现就是软件需求的变化越来越频繁。敏捷软件开发正是为了应对这一问题而诞生的软件工程学方法。它以适应性的过程代替传统的预测型的过程代替传统的预测性的过程,在很大程度上满足了现代商业软件业务复杂、需求多变、时间要求紧迫等特点。

敏捷软件开发的倡导“个体和协作胜于过程;可工作的软件胜于完整的文档;客户协作胜于合同;响应变化胜于遵循计划”的软件开发方式,以人为核心,注重交流和协作,强调软件可持续发展,实现频繁交付对客户最重要的价值。

敏捷软件包含敏捷项目管理、敏捷需求管理和敏捷软件方法三个部分。

一、敏捷项目管理

敏捷是一种态度而不是一个流程,是一种氛围而不是方法。敏捷项目管理强调的是沟通:与客户之间的沟通、项目成员之间的沟通。基于这一思路,敏捷项目管理更重视与“人”的作用,要求项目的组织形式具有以下特点:

1,很强的文化适应性。

2,最低限度的规则,鼓励自我组织,并结合自律以遵守哪些规则。

3,很好的协作和沟通环境。

从以上三点可以看出,敏捷项目管理对人的限制很低,这与传统软件工程中把“人”做为生产流水线上的一个环节进行管理的方式截然不同!软件业是科技密集型的产业,软件产品的最终质量更多的取决与软件开发人员的素质和态度,而不是软件的开发过程和开发设备,这也是软件业与传统行业差距最大的地方。敏捷项目管理的最终着眼点便是如何提高软件开发人员的素质和如何激发软件开发软件的热情,从而提高最终软件的质量。

但是从另一方法,采用敏捷项目管理,也必然要求项目成员具有更高的专业技能和专业素养,以防止宽松的环境导致的消极怠工等现象。

二、敏捷需求管理

软件开发的最终着眼点是如何满足用户的需求。这些需求通常是复杂的、模糊的,甚至是不确定的。敏捷需求管理采用增量交付的软件开发流程,借助其与客户持续沟通的特点,不断的校准软件的开发防线,逼近用户的最终需求,使最终开发出来的软件满足客户的要求。

敏捷软件开发流程

增量交付的软件流程如图1所示。该流程最重要一点在于“增量交付”,软件以模块化的方式进行开发,通常一个模块的开发周期是一至两周。每个模块开发完成后,按照正规的发布流程发布,交付给客户试用。在客户使用过程中,了解客户对当前完成功能的意见。然后与客户沟通,一起制定下一轮开发的计划。

该流程的最大好处在于客户全程参与软件的开发,把握软件的目前的开发状态,确保软件实现的功能能够满足用户的需求。

但是另一方面,增量的交付也对软件开发技术提出了更高的要求:模块化的开发方式要求更彻底的解耦合;需求的变化要求软件架构具有更高的灵活性;增量交付要求对发布过程的高度自动化等等。

三、敏捷软件方法

对应于以人为本的敏捷项目管理和以增量交付的敏捷需求管理,敏捷软件开发提供很多具体的方法指导软件的开发实践,这些方法包括重构、结对编程、测试驱动、持续集成等,以下简要介绍重构和结对编程。

1,重构。

重构即在不改变既有代码的行为的前提下,改善代码的设计。重构的目的是为了消除代码重的“坏气味”,从而达到放置代码腐烂的目的。

常见的重构的手法有“重命名”、“抽出新方法”、“包装成员”、“将方法在继承层次中移动”等。

重构通常以设计模式作为目标,以单元测试作为保证代码正确性的手段。

2,结对编程

结对编程即两个开发人员使用一台电脑进行开发,通常是一个人操作另一个人,另一个人辅助,一段时间后,两人交换。这种看似降低了一半的开发效率开发方式具有以下优点:

第一,所有的决定都是有两个人共同做出的,并且所有的代码是在两个人的配合下写出的,这大大降低了Bug的产生几率,从而缩短了调试所需要的时间。

第二,所有的代码至少有两个人了解,这降低了代码对开发人员的依赖性,防止开发人员的离职对项目造成的影响。

敏捷软件开发为现代商用软件量身打造。经过这几年的发展,无论在项目的开发方式,还是在具体实践方法上,都有形成了自己的特色,与传统的开发方式分庭抗衡。

本文转自冬冬博客园博客,原文链接:http://www.cnblogs.com/yuandong/archive/2007/12/31/1021486.html ,如需转载请自行联系原作者
http://www.lryc.cn/news/2417208.html

相关文章:

  • .mp4视频测试地址
  • Java IO流操作汇总: inputStream 和 outputStream
  • DRM-widevine 总结
  • 电脑提示msvcp110.dll丢失修复方法,总结四个有效的方法
  • Linux入门基础完整版【详解】
  • 微机原理与接口技术实验二:8255A控制4按键二进制输入数码管显示
  • 发现了一个好网站.绝不是打广告,独乐乐不如众乐乐.
  • 变量及四种变量类型
  • 汉字编码问题
  • 史上最全网址导航大全,让世上没有找不到的好东西
  • 新手写CSDN的教程
  • [转]DTV(数字电视)扫盲-DVB介绍
  • 微软官方精简Windows7系统——Windows Thin PC的安装过程
  • 【渗透测试笔记】之【钓鱼姿势——exe伪装word文档(exe图标修改方法)】_restorator如何添加exe资源(2)
  • google protocol buffer全解析------田纪原,2024年安卓开发进阶课程
  • js中的offsetLeft和style.left
  • 计算机丢失msvcrtdll怎么修复,雨林木风修复msvcrtdll 【操作方案】 的详细_
  • 人工智能与物流:智能化的物流管理
  • rearm 命令_运行输入slmgr.vbs -rearm 命令什么意思
  • 电脑蓝屏代码大全合集
  • nii文件中的方向理解
  • LLT与HLT测试简介
  • Linux内核:Pci设备驱动——设备枚举
  • 老挑毛u盘一键装系统计算机意外地,揭谜一键Ghost的“恶”事 大白菜、老毛桃、通用都不干净...
  • order by、sort by、distribute by sort by 、cluster by、group by order by、partition by order by 解析
  • 4转换vsn格式_文件格式转换麻烦?教你一招,PDF、Word、PPT随便转
  • 抓取sankakucomplex图片
  • DNS(Bind9) Anycast 数据中心部署 最终版
  • Linux淘金记(一):module_init——初始化就该这么写
  • IOS-Moya简单使用-Swift