我观察到“足够好”质量的客户订购软件与不愿意为良好的工程实践(单元测试、代码评审等)付费的同一个客户之间的关联,我多次称之为因果关系。尽管如此,我仍然很难想出这种想法背后的逻辑推理,所以我希望这里的社会人士能给我一些见解。
在我看来,上面提到的工程实践只对两个质量属性有影响:可维护性和较小程度的可靠性。除了扔掉的原型,我很难想象一个头脑正常的客户会想要得到软件。
另一方面,其他质量属性,如可伸缩性或性能,并不直接受工程实践的影响(如果我们不计算来自另一个联盟的体系结构评审)。更有趣的是,放松其中的一个或多个可以大大降低成本,而不遵循适当的工程实践可能会导致项目成本的增加,因为所谓的“无休止的调试/稳定周期”
我应该错过一些重要的东西,因为不正确地进行软件开发的“保存”的偏好在客户中非常普遍。
请启发我:)
发布于 2015-01-20 13:13:44
我从来没有见过一个客户要求提供质量不佳的软件。然而,他们真正想要的是最便宜的软件,他们想要它尽快。
开发软件的最便宜和最快捷的方法是尽可能快地把一些东西放在一起,然后调试它,直到它做你想做的事情,并且不会经常崩溃。
在这一点上,开发人员可以发货软件和账单客户。卖方很高兴,因为他们得到了报酬。买主很高兴,因为他们很快就买到了低价格的东西。
最终用户会得到错误和不可靠的软件。但最终用户并不是做出购买决定的人。
在这一周期的任何时候,长期维修费用都不是一个考虑因素.
发布于 2015-01-20 15:56:47
。然而,
例如,测试:您可以进行一些手动测试,自动覆盖基本测试,创建一个广泛的自动化套件,测试所有的库/依赖项,由第三方对其进行反复检查.
例如,代码质量:随着你的代码,花时间进行一个干净的设计,经常重构,重复检查一切,三次检查第三方,正式的证明.
每件事都有代价。基本上,您越想确保您的软件没有bug,它的成本就越高。测试套件和频繁重构可以很快超过开发本身。现在,bug的成本是多少?...every客户端就在这个价格/bug曲线的某个地方。
有些人只是想要一些基本的东西,宁愿偶尔和一个虫子生活在一起,也不愿意支付额外的钱。有很多这样的例子:
还有其他极端。飞机、航空航天、金融和医疗应用的软件经过了如此彻底的测试,以至于即使是微小的变化也需要数百万,因为许多东西必须经过彻底的验证。甚至不要考虑更新开源库...or甚至使用“普通”硬件!)
在这里,同样的模块也经常由独立的团队并行实现。然后,这些模块并行运行。如果在某一点上,它们的输出不同,就会发生某种决策,例如,如果有三个模块可用,则采用“多数获胜”的方法。...so,您准备好由三个不同的团队开发相同的软件了吗?
发布于 2015-01-20 13:16:43
从我通常遇到的情况来看,要构建可以被认为是好的软件,我们需要有一套清晰的需求,也许不是所有的需求,但至少需要一套不会改变的核心规则。然后,您将选择您的体系结构、设计模式、语言和框架。
这方面的问题是,大多数情况下,客户本身并不真正知道他们想要什么。他们通常会知道他们想要实现什么,但是当你开始问为什么他们想要某些功能而不是其他功能时,他们中的大多数通常都是空白的。更糟的是,一些客户可能会因为你的所有问题而被冒犯,因为他们认为这些问题是借口,这样你就不会去做工作,浪费时间。
客户通常需要快速的解决方案,而且他们希望它们便宜(至少在短期内)。只要你能满足他们的要求,他们就不会在乎你做了什么。根据我的经验,即使需要大量的维护,客户仍然会选择快速的解决方案。要正确设计一个易于升级的系统需要几个月的时间,至少从经验来看,这是不可能的。
https://softwareengineering.stackexchange.com/questions/270602
复制相似问题