根据您的经验,在那些开发供内部使用的定制软件(例如金融服务公司)的行业中,哪些行业生产的软件质量更高(以缺陷率来衡量,更具体地说,从长期来看易于维护)?

实现更高质量的最大贡献是什么?是由于更好的软件开发实践(例如更加重视测试或规范)吗?开发人员更了解工具或者谁是强大的问题解决者?团队成员之间更好的沟通?

另一方面,您认为哪些行业生产的软件质量最低?为什么?

有帮助吗?

解决方案

这是一个非常复杂的问题。虽然 NASA 确实为生命攸关的系统或必须远距离运行的机器人系统提供了高质量的代码(想想最近对距地球 13 光小时的 Voyager 2 进行的软件修复),但 NASA 的质量并不便宜,或者很快。逐行,它可能是业内最昂贵的软件。

您在企业中的基本报告应用程序不需要这种质量。也不符合成本效益。提高质量的方法有很多,其成本各不相同,从简单、廉价(编码标准)到资源密集、困难且极其耗时(每种方法的正确性的书面形式数学证明)。

风险评估、项目事后分析和持续改进等项目管理工具可以帮助组织获得一套合适的质量实践。

在不针对特定行业的情况下,我想说,就质量而言,最具破坏性的做法是时间压力。没有什么比人为的紧迫期限更能促使程序员编写草率的代码了。

想要更好的品质需要什么?

沟通至关重要。团队中的每个开发人员都应该知道其他开发人员正在做什么,至少在广泛的范围内。

其次,要理解质量从项目被接受之日起就开始了。需要理解和验证需求。关键因素包括确保需求确定要解决的问题,而不是使用建议的解决方案来避免问题定义;确保需求是可衡量的且足够具体,以便开发人员和客户都能够认识到解决方案满足需求;确保将需求清楚地传达给所有需求使用者,包括开发人员、测试人员、技术编写人员、支持人员和经理。质量最好根据明确规定的要求来衡量;如果您的要求定义不明确,那么质量充其量只是偶然风险。

评论至关重要。不仅仅是代码审查,还有需求分析、设计,也许最重要的是测试计划。测试的作用是验证是否满足要求。您无法测试不良或不存在的需求。

这有助于理解测试的作用。您无法测试产品的质量。测试可以验证质量。测试可以发现缺陷并验证它们是否已修复。但是,如果质量实践在测试开始之前没有得到遵循,那么测试就无法解决这个问题。

虽然我不喜欢瀑布开发模型,但我认为敏捷开发可能会把事情带到另一个极端,并且很容易被滥用而损害质量。我认为 Scrum 有助于缓解敏捷的一些问题;Scrum 促进团队内部的沟通,它认识到估算只不过是有根据的猜测,可以随着知识的提高而完善。

其他提示

我一直很喜欢 “他们写正确的东西” 哪个详细介绍了NASA承包商的软件开发过程。

穿梭软件绝对是您想看到的错误持续存在的最后一个地方之一!

在另一方面,您认为哪些行业生产最低质量的软件?为什么?

我会说网络。主要是因为它非常容易部署,因此没有客户通知(或输入)可以完成许多更新/修复程序。与盒装软件相比,似乎比较轻松的心态。

将不得不继续说,银行编写最糟糕的代码 - 他们需要各种自定义解决方案,但是编写代码不是他们的主要重点,因此他们倾向于使用“使其可以以某种方式工作”。将其与将代码相结合,就像将其运送到最低出价者中可以制作的小部件一样,出现的东西可能确实值得畏缩。

当然,这在上述银行内的银行,组织以及组织之间都不相同,但是总的来说,我看不到很多质量代码。作为在银行工作了10年的人,我认为自己是糟糕的银行软件专家:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top