新闻动态

软件开发_手机软件开发_开发一个软件多少钱_深圳金绣科技开发有限公司

2019-02-19 20:11:32 作者:小麦

           罪恶之源

让我们来想想这样一个典型的项目:在开始之前,开发团队估计产品待办列表中有80个单位工作量的需求。你希望在10 Sprint(每个 Sprint:为期一个月)内发布这款软件。从习惯上来说,软件开发团队会用80除以10,也就是说需要在每个Spn完成8个单位工作量的需求。因此,为了在限期前完工,无论牺牲多少质量,或者说忽略多少操作,他们都会在每个月挑选出8个单位的工作量。

在使用预测型流程的项目中,软件开发部门对需求、交付日期和成本进行估算,然后根据需求交付软件。而在采用 Scrum的项目中开发团队在一个 Sprint的增量中交付尽可能多的功能,且交付的增量必须达到组织所订立的质量标准。然后你可以选定一个交付所有完成功能的日期,或者选定想要的功能,然后在所有功能完成时交付软件。这个时候质量不再是一个变量了。

软件开发,质量一直是一个变量。如果降低质量,可以缩短系统交付的延期。而实际上,降低质量会降低生产效率,增加成本并造成更严重的延期。因为团队需要花费额外的精力来修复更多乱七八糟的缺陷和错误。唯-的不同是,这种日期延误和成本増加是悄无声息的。

回到之前的例子,在第十个月结束的时候,软件的所有功能本应该完成并且可以使用了。然而,我们却积累了48个单位的未完成的工作。这个问题让人很郁闷。我们想要让开发人员完成剩下的工作,尽快提升每个产品待办列表项的完成度。但是,要求软件开发人员“尽快完成”是错误的。因为这通常需要额外的6Spnt(48个单位的工作量除以约8个单位的速率),累计未完成和不完整工作的总和与已完成工作之差,就是剩余的工作量。

最后,软件开发团队完成了未完成的工作,于是产品终于可以工作了然而,很快客户就告诉我们,这款产品并不符合他们的要求。这个时候,工作未完成成软件中的常态了。这样的技术债务阻碍了人们有效地使用这款产品。它还会导致我们将很多精力和金钱耗费在电话支持服务和缺陷修复上。最坏的情况是,客户会开始寻找更好的替代品,而我们却无法获得期望的利益产品会因技术债务而逐渐使变得脆弱,其生命周期也会因此而缩短。

软件开发

试想一个只有3个程序员和2个测试工程师的软件开发团队使用传统的预测型流程。程序员编写代码,然后让其他人(例如测试工程师) 进行测试。一旦发现问题或者缺陷就让相应的程序员修复。由于从完成编码到发现并报告问题之间有一段时间间隔。在这期间,程序员可能已经在有问题的代码上添加了新的功能或者做了修改。这时要修复原有代码上的问题需要花费更多时间。用于修复问题所需的时间随着时间的推移以复利的速度增加。因此尽快修复问题是至关重要的,必须在问题出现的时候就将其检测出来并修复。这样,软件开发人员能够在问题复杂化之前继续下一步开发,也不需要在之后花费大量精力来补救。

技术债务阻碍了透明性,也会导致决策出错。我们通过对比完整可用的软件功能模块和剩余需要完成的功能模块来度量迸度。没有完成的工作并不在进度的计算范围之内。然而很多软件开发人员开发的增量都是不完整的。通常,当团队成员被问到为什么只是部分完成了产品待办列表中的一些需求,而不是挑选较少需求而彻底完成这些它们时,他们会说:咽因为时间不够。”这个时候,应该向 ScrumMaster求助,确保这样的事情不会发生。

本书提供了可预测性、风险控制以和优化价值方面的知识。透明性则是它们的基石。至多每30,你就能看到投入带来的回报。很多开发人员都挣扎于改掉老的习惯并获得专业技能来创造这种透明性。同时,也有很多软件开发人员已经跨过了这道坎。因此,你可以投资于开发人员,直到他们都能够熟练地进行开发,也可以选择其他拥有足够技能的软件开发人员为你效力。