如何 给给软件开发 添加 代理_敏捷开发是如何被跑偏的

今天聊聊敏捷软件过程。

先说结论:据我观察,至少有60%的团队误用了敏捷软件过程,或者说至少60%的团队在进行伪敏捷开发。

与大家通常的认知是相反的,敏捷过程并不是一个非常容易实践或者实施的过程规范。

通常来讲,没有天上掉馅饼的事儿,所以使用敏捷软件过程带来灵活性收益的同时,一定是要付出相应的代价的。

例如:

  1. 如果需要实行结对编程,那么在选择团队成员的时候就需要考虑人员的性格特质,或者增加相应的培训和团建活动;
  2. 如果需要实行测试驱动开发,则要求团队成员对于自动化测试的技术掌握更加熟练和深入;
  3. 如果需要进行快速设计,则会对开发人员的设计经验有一定的要求,并同时未来一定要有进行重构的时间安排才可以;
  4. 等等其它

最终,你会发现:如果一个团队没有能力实施传统的软件开发过程的话,则他们多半也无法很好的实施敏捷软件过程……

敏捷过程实施起来其实还是有一些难度的。有一些团队准备实施循序渐进的策略:针对敏捷过程所要求的一些最佳实践,先上一些比较容易实施的,然后在陆续加入其他。

4bd208b39d4fcea65183bbc94c28cc66.png

令人失望的是,这样的做法也会引发一些问题。就拿非常流行的极限编程来讲,极限编程所要求的最佳实践实际上是相互循环依赖的!所以仅仅选择某几项最佳实践来进行实施的话,最终会导致整个系统的崩溃!比如:

  1. 极限编程讲究的是快速设计,但是其最终的设计合理性和最优性是由CRC讨论会和后续的重构动作来保证的;
  2. 极限编程省略了冗长的需求分析文档,代之以即用即抛的“用户故事”;但是为了保证功能的正确性,他会有一个更加严峻的要求:现场客户;
  3. 极限编程没有专门的测试阶段,那么如何保证产品的质量呢?辅助以三个最佳实践:结对、测试先行和持续集成;
  4. 重构动作保证了架构的最优化,但是谁来保证重构不会对系统带来负面影响呢?测试先行和持续集成;
  5. 类似的等等

于是,有不少团队在实行了敏捷软件过程之后,仍然停留在(或者说倒退回了)游击队式的野生软件开发过程。

那么如何才能够正确的实施敏捷开发过程呢?我理解,至少需要具备如下的前提,才能够比较顺利的实施敏捷过程:

  1. 团队成员对面向对象的开发和设计有相当程度的理解和经验(最起码有想要提高或者学习的需求);
  2. 团队成员能够熟练的使用自动化测试的框架,并编写自动化测试脚本;
  3. 团队成员能够熟练的使用持续集成的框架或者产品;
  4. 团队成员平均沟通能力中上,没有表达能力低下者;
  5. 至少有一个渠道能和客户(或者有足够话语权的客户代表)进行频繁并流畅的沟通;
  6. 管理者(包括甲方客户)和开发团队之间有相对比较平等的话语权;
  7. 管理者(包括甲方客户)能够理解(或者信任)开发团队所提出的一些隐性的工作量(例如重构、编写文档、测试脚本等)所带来的时间成本;

上述看似并不太高的门槛,却挡住了60%的软件开发工程师……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468389.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在实时操作系统里随便写代码都能硬实时吗?

这是转发宋老师写的文章,我也是刚知道,宋老师跟我一样也是养娃的人了,国庆期间,看看文章,看看升升国旗。很久没有写技术文章了,做码农难,做养娃的码农更难,趁着娃看动画片的机会&…

python 数据分析 实际案例_python实战案例:超市营业额数据分析

实战是学习的最好途径,效率最高,本文不是很长,通过小小的练习,让大家综合运用基础知识,加深印象巩固记忆。一、读入数据,了解数据本数据随机生成的假数据,读者可以自己造,也可以通过…

台达n2系列变频器_台达变频器C2000系列在Profibus网络中的应用

基本介绍现场总线就是顺应信息技术的发展趋势和工业控制系统的分散化、网络化、智能化要求而发展起来的新技术,它的出现和发展已经成为全球工业自动化技术的热点之一,受到全世界和工业界的普遍重视。现场总线(Fieldbus)技术是实现现场级控制设备数字化通…

CentOS 6.8 虚拟机安装详解

第一步:安装 VMware 官方网站:www.vmware.com 下载百度云链接:http://pan.baidu.com/s/1bphDOWv 密码:0zix VMware 是一个虚拟 PC 的软件,可以在现有的操作系统上虚拟出一个新的硬件环境,相当于模拟出一台新…

unittest里discover用法_unittest框架核心要素及应用

1. unittest核心要素unittest介绍测试框架,不仅仅用于单元测试python自动的测试包用法和django.test.TestCase类似1.1【知道】unittest介绍和核心要素1.2【掌握】unittest核心要素的使用""" 1. 测试用例 2. 容器,容器添加测试用例 3. 运行…

void函数调用时显示不允许使用不完整的_4位数码管显示模块驱动

TM1637四位数码管模块是一个带时钟点的4位共阳数码管(0.36英寸)的显示模块,驱动芯片为TM1637,驱动方式为IIC,因此只需2根信号线即可使单片机控制4位8段数码管(数码管8级亮度可调)。模块特点如下:显示器件为4位共阳数码管数码管8级…

在线就能用的Linux我给你找好了

今天的天气真的是超级爽,秋日的凉风吹在脸上真的太美了,好不容易的假期,希望大家都玩得开心,今天分享一篇文章,是守望兄的,总结了几个在线的Linux,喜欢的同学,可以保存下来&#xff…

mysql访问类型最好的_【干货满满】最全的MySQL性能指南(一):选择最佳的数据类型...

对于 MySQL 数据库来说,好的逻辑表和物理表的规划至关重要,我们需要根据查询语句来针对性地设计 Schema ,没有万能好用的 Schema。一个 denormalized 的 schema 可以在某些场景下加速语句查询,但是放在其他应用场景下就会适得其反…

测试两个主机之间的连通性_借助网络测试神器极速解决网络故障

时下,网络使用越来越频繁,随之遇到网络故障的情况也多起来,那么诊断网络故障就成了必不可少的一环,投诉和求助是一种基本的方法,但有时太过缓慢,有些时候自己可以快速搞定,检查到故障原因所在&a…

随想,对嵌入式职场建议

guoqingjie已经过去两天了,因为楠哥生病,我们搁浅在了深圳,不过相比在路上的奔波,待在家里感觉惬意不少,不用在路上各种操心,之前上班感冒,身体处在亚健康状态,睡了两天身体也恢复一…

java可达性_java垃圾回收机制--可达性算法

先说一些题外话,Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区,这些区分为线程私有区和线程共享区1、线程私有区a、程序计数器记录正在执行的虚拟机字节码指令地址。此区域是是唯一一个在java虚拟机规范中没有规定任何Ou…

为什么要有uboot?

一、为什么要有uboot1.1、计算机系统的主要部件(1)计算机系统就是以CPU为核心来运行的系统。典型的计算机系统有:PC机(台式机笔记本)、嵌入式设备(手机、平板电脑、游戏机)、单片机(家用电器像电饭锅、空调…

华为路由器上有没有mac表_MAC地址表、ARP缓存表、路由表及交换机、路由器基本原理...

MAC地址表说到MAC地址表,就不得不说一下交换机的工作原理了,因为交换机是根据MAC地址表转发数据帧的。在交换机中有一张记录着局域网主机MAC地址与交换机接口的对应关系的表,交换机就是根据这张表负责将数据帧传输到指定的主机上的。交换机的…

#define的高级用法

来源:嵌入式大杂烩地址:https://blog.csdn.net/xiaoxu2050/article/details/82893476一、宏的定义与撤销需要注意的是:(1)宏定义应注意添加括号,这样语义会比较清晰。(2)使用#undef可…

python读取csv文件_python3.0读取csv文件

创建CSV文件,可以打开excel文件,创建表格以后,另存为csv文件(以逗号分隔的文件)以文本格式打开,发现是用逗号分隔的用python读取csv文件,首先要引入一个库:csvimport csvdef getCsvFile(strpath):with open(strpath, &…

直击中关村创业大街,新街头霸王来了

中国的硅谷在北京中关村。如今,中关村中正在酝酿硅谷中的硅谷,这里将不断诞生最前卫最现代的互联网和移动互联网创业公司,他们当中极可能孵化出中国互联网企业未来10年的新的BAT。这个硅谷中的硅谷。就是中关村创业大街。这条街在过去15年是北…

我们应该这样理解鸿蒙

之前写过文章谈到的鸿蒙,很多人觉得我说的有点过分,但是我觉得现在出来的情况还是符合预期的,鸿蒙正在完成他的任务。讲个故事,手机还没有普及的时候,相机的地位非常高,相机里面有一个东西叫做胶卷&#xf…

人工智能在语音和数字图像处理领域有哪些具体化应用_智能呼叫中心系统有哪些优势...

近年来,随着科技的发展特别是人工智能技术、云计算、大数据的到来,新技术逐渐渗入人们日常生活中的各行各业里面,以机器人来代替人工处理繁重的任务变得普遍。在人工智能时代下,新一代智能呼叫中心系统应运而生,呼叫中…

centos下mysql多实例安装3306、3307实例(2014-10-15)

背景说明 mysql的安装方法有多种,如二进制安装、源代码编译安装、yum安装等。yum安装仅仅能安装mysql 5.1 版本号;源代码安装编译的过程比較长。若没有对源代码进行改动且要求使用mysql较高版本号,建议使用二进制安装。本文以二进制安装mysql…

如何自己实现一个栈

文章转自编程珠玑,作者:守望先生前言栈是一种应用广泛的数据结构,例如函数的调用就需要使用栈,其实我们在介绍《栈的操作栈的常见操作有出栈(POP),从栈中弹出一个元素;入栈(PUSH),将一个元素压入…