06人月神话阅读笔记之四
《人月神话》是大学刚开始就很熟悉的一本书,当时被奉为软件工程的圣书,似乎都要在书架上摆上它才能表明软件工程学生的身份。时至今日我再读它,因为有了之前参与系统的开发的经验,很多的内容都通过记忆得到了验证,读来与大一时的“虽然不懂你在讲什么但好像很有道理” 的体会有了明显的不同。选择一些章节写一些理解。
未雨绸缪
我们在实现功能时往往有很多思路,但是哪种思路能行得通并且最适合情况就需要我们进行试验性开发。试验性开发确实会造成精力的消耗,或许大量的测试方案最终还会被舍弃,但是我们必须这样做。实际上如果不进行方案的实验,正式的开发反而可能遭遇返工和混乱的拆补,会严重分散重新开发人员的精力和信心,甚至影响用户对产品的信任。这世界上唯一不变的就是变化本身,我们必须有未雨绸缪的能力,对未来可能产生的变化做出提前的设计,甚至对组织架构也需要进行提前的计划来规避变化造成的风险。除了开发,运营维护也需要适应变化,这就需要我们提高代码的质量和可读性,完善测试过程,保证系统在调整的过程中能够尽量少地引入更多问题。前人的智慧告诉我们,缺陷是永远存在的,我们需要通过质量管理放缓系统混乱度的提高。
干将莫邪
软件的开发离不开工具,从需求的分析,到系统的设计,到程序的编码,到构建、测试、发布和维护,我们要善于利用工具来提高我们工作的效率和质量。
整体部分
面向对象编程的“封装”思想和结构化编程的“精化”思想对于整个软件开发过程的各个粒度同样适用。整体的顺利运行离不开各个组成部分的优化。编码时各个信息隐藏的模块需要完成各自的任务,再通过接口互相配合。测试时需要从最小的单元测试开始,每一粒度都测试完全时,整个系统的运行才有保证。当系统出现问题,需要找到问题的发生点,这时就需要将问题在不同的模块和粒度上分解测试,最终找到问题的症结。
没有银弹
软件活动的根本任务是打造构成抽象软件实体的复杂概念结构。在软件实现的过程我们常常会遇到一个看起来简单的东西却严重影响了软件的质量和进度。人们希望找到一种方法能完美解决这个问题。然而,经过多年的探索,我们发现,这样的方法根本不存在,于是催生了软件工程这个学科来针对软件过程中的每个细分进行方法论的指导。在解决这个问题的过程中,人们也做了很多努力,提出了高级编程语言、面向对象编程、人工智能、专家系统、图形化系统、程序验证、工作站等方式,这些对于软件工程的发展都产生了重要的影响。
人月是一个神话,现如今软件工程却是真实地在解决软件过程中的问题,提高软件产品的质量。研究人员和实践人员的不断探索或许永远无法一劳永逸地解决所有问题,但是从中积累地经验却能够有效地指导我们更好地应对大型软件系统的实现与管理。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现