人月神话阅读笔记2
在化学领域中,在实验室可以进行的反应过程,并不能在工厂中一步实现。一个被称为“ 实验性工厂(pilot planet)”的中间步骤是非常必要的,它会为提高产量和在缺乏保护的环境下运作提供宝贵经验。软件系统设计中也同样有这方面的问题,若把设计的算法应用到待发布的软件中,根据时间进度把第一次开发的产品发布给客户,显然这是非常糟糕的事情。
因此,管理上的问题变成了“是否预先计划抛弃原型的开发,或者是否将该原型发布给用户?”,将原型发布给用户,可以获得时间,但是它的代价高昂——对于用户,使用极度痛苦;对于重新开发的人员,分散了精力;对于产品,影响了声誉,即使最好的再设计也难以挽回名声。
首先,我们要意识到,变化是与生俱来的,实验性的系统必须被构建和丢弃。那么,该如何为上述变化设计系统呢?这其中最重要的措施是使用高级语言和自文档技术,以减少变更引起的错误。采用编译时的操作来整合标准声明,在很大程度上帮助了变化的调整。此外,当系统发生变化时,管理结构也需要进行调整,我们还需要变更计划组织架构。
在程序发布给用后,变化仍将继续。对于一个广泛使用的程序,其维护总成本通常是开发成本的40%或更多,维护成本受用户数目的严重影响,用户越多,所发现的错误也越多。Campbell指出了一个显示产品生命期中每月bug数的有趣曲线,它先是下降,然后攀升。缺陷修复总会以(20-50)%的机率引入新的bug。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)