根据您的经验,开发用于内部使用的定制软件的行业,例如金融服务公司,哪些行业生产质量较高的软件,以缺陷率衡量,更具质量,长期易于维护?
对这一高质量成就的贡献最大?是否由于更好的软件开发实践,例如更加强调测试或规范?更好地理解工具或谁是强大的问题解决者的开发人员?团队成员之间更好的沟通?
另一方面,您认为哪些行业生产质量最低的软件?为什么呢?
答案 0 :(得分:4)
我一直很喜欢"They Write the Right Stuff",详细介绍了NASA承包商的软件开发过程。
Shuttle软件绝对是您希望看到您的错误持续存在的最后一个地方!
另一方面,您认为哪些行业生产质量最低的软件?为什么呢?
我会说网络。主要是因为它非常易于部署,因此可以在没有客户通知(或输入)的情况下完成许多更新/修复。与盒装软件相比,似乎有更宽松的心态。
答案 1 :(得分:3)
必须继续说银行写出最糟糕的代码 - 他们需要各种自定义解决方案,但编写代码不是他们的主要关注点,所以他们倾向于“让它以某种方式工作”。将它与处理代码相结合,就像你可以通过将它发送给最低出价者而制作的小部件一样,出来的东西可能真是令人畏惧。
这当然因银行之间的银行,组织和组织而异,但总的来说,我看不出很多质量代码。作为一个与银行合作10年的人,我认为自己是蹩脚银行软件的专家:)
答案 2 :(得分:2)
这是一个非常复杂的问题。虽然NASA肯定能为生命攸关的系统或必须远距离操作的机器人系统提供高质量的代码(想想最近在旅行者2上的软件修复,离地球13个小时),NASA的质量并不便宜或者很快。 Line for line,它可能是业内最昂贵的软件。
您在企业中的基本报告应用程序不需要那种质量。它也不符合成本效益。有许多方法可以提高质量,它们的成本从简单和廉价(编码标准)到资源密集型,困难且极其耗时(每种方法的正确性的书面,正式数学证明)。
风险评估,项目验尸和持续改进等项目管理工具可以帮助组织获得一套合适的质量实践。
如果不指责特定行业,我会说在质量方面最具破坏性的做法是时间压力。没有任何东西可以让程序员编写邋code的代码,就像紧张的人为期限一样。
提高质量的要求是什么?
沟通至关重要。团队中的每个开发人员都应该知道每个其他开发人员正在做什么,至少在广泛的范围内。
其次,理解质量从项目被接受的那天开始。需要了解和验证需求。关键因素包括确保要求确定要解决的问题,而不是使用建议的解决方案来避免问题定义;确保需求具有可测量性和特定性,以便开发人员和客户都能够认识到解决方案符合要求;确保将要求明确传达给所有需求的消费者,包括开发人员,测试人员,技术编写人员,支持人员和经理。质量最好根据明确规定的要求进行衡量;如果你的要求定义不明确,那么质量最好是危险的。
评论至关重要。不仅仅是代码审查,还有需求分析,设计以及最重要的测试计划。测试的作用是验证是否满足要求。您无法测试不良或不存在的要求。
这导致了解测试的作用。您无法在产品中测试质量。测试可以验证质量。测试可以发现缺陷并验证它们是否已被修复。但是,如果没有对质量实践进行跟踪,那么测试就无法解决问题。
虽然我不是瀑布式开发模型的粉丝,但我认为敏捷开发可以将事情带到另一个极端,并且很容易被滥用以损害质量的方式。我认为scrum有助于缓解一些敏捷问题; scrum促进团队内部的沟通,并且它认识到估计只不过是可以在知识改进时进行改进的有根据的猜测。