极客视点
极客时间编辑部
极客时间编辑部
113240 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/04:01
登录|注册

开发高质量软件需要更高成本吗?

讲述:杜力大小:1.84M时长:04:01
ThoughtWorks 首席科学家马丁·福勒(Martin Fowler )指出,软件开发项目中存在一种常见争论,即“花时间提高软件质量,还是专注于发布更有价值的功能?”他认为发布新特性的压力常常导致开发人员抱怨他们没有时间研究架构和代码质量。
在马丁看来,高质量的软件实际上生产成本更低,而他接下来的阐述进一步颠覆了问题本身。马丁也承认,在大多数情况下,更高的质量会花费更多成本。但他强调这并非一个绝对规则。
马丁首先对“软件质量”做出了界定。有很多方面可以囊括在内,比如用户界面清晰吗?软件足够可靠吗?架构合理、明确吗?前两个问题都可以由用户、高管、消费者来判定,但他们无法体会软件架构,而这正是开发者判定软件质量的标准之一。
所以,这篇文章将软件质量属性划分为外部(例如 UI 和缺陷)和内部(架构)。区别在于,用户和消费者可以看到软件产品外部质量高的原因,却难以分辨出内部质量的高低。
用户可以判断他们是否想要支付更多费用以获取更好的用户界面,但对于内部模块化结构难以做出判断。试想一下,如果有两个近乎完全相同的应用程序,一个售价 6 美元,另一个售价 10 美元,区别仅仅在于后者的源码整齐有序而前者较为混乱。这并不影响程序正常运行,客户为何要多花 4 美元购买后者?既然如此,为什么软件开发人员还要花时间和精力来提高工作的内部质量?
马丁在此引出了“技术债务”(Technical Debt)的概念。由于代码混乱而造成的难以清理的残余项(cruft)便是积累技术债务的罪魁祸首,为增加新功能所付出的额外努力则是债务利息。
如果模块结构足够清晰,假设添加一个新功能需要四天时间,但由于逻辑混乱或数据难以理解等代码规范问题,这一工作可能将会被延长至六天。
这些繁琐的部分不仅会更加耗费开发人员的时间和精力,也加大了出错的可能性,那么以后将需要花费更多成本来进行修补。
由此看来,内部质量实际上对用户来说也至关重要。因为更好的内部质量使得添加新功能更快、更容易,成本也更低。
马丁表示,内部质量的基本作用是降低未来变革的成本。但是编写好的软件需要额外的努力,这在短期内会产生一些成本。当软件内部质量较差时,在最初一段时间,工作进展很快,但随着时间的推移,添加新功能变得愈发困难。而专注于提高内部质量很可能造成生产力下降,但开发人员可以通过利用先前的工作轻松构建新功能。这一目标需要一支技术精湛,训练有素的团队来实现。
马丁综合参考了一些熟练开发者的意见,发现质量差的代码会在几周内显著降低生产速度,拥有高内部质量的软件随后远远反超。因此,从长远看来,不必太费心思在质量与成本之间权衡。
此外,即使是最优秀的团队也会在工作时不可避免地产生一些“垃圾”。马丁说他常常听到团队只有在花了一年左右的时间构建架构之后,才能真正理解软件的架构。即使是最好的团队也会在他们的软件中肆意妄为。不同的是,好的团队即使创造了垃圾,也能及时清理掉它们。好的团队还会花时间创建自动化测试,也经常进行重构,以便快速解决问题、清理残余。
最后,总结一下:
忽视内部质量会导致“垃圾”快速产生,这将进一步延缓功能开发;
即使是一个伟大的团队也会产生这样的问题,但通过保持内部质量,可以控制它;
高内部质量使团队能够以更少的工作量、时间和成本开发新功能。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
45
沉浸
阅读
分享
手机端
快捷键
回顶部