梦断代码阅读笔记之三

小皇帝闹闹 小皇帝闹闹     2022-09-03     222

关键词:

今天我看到了本书的第九章,本章主要讲了关于软件开发的方法论。同时作者为我们介绍了软件缺陷编年史上数量不多但是足以警示世人的惊人灾难。

         19626月,水手一号探测飞船在发射5分钟后偏离轨道,为避免坠入居民区,飞行控制人员只好将其引爆。问题在哪?导航控制程序中少了一个连字符。19966月欧洲航天局投入5亿美元建造的阿丽亚娜5号无人运载火箭发射后40分钟爆炸,原因是在控制其导航系统的程序中有一个缺陷。(代码要将64位变量转换为16位变量,但是数字太大,出现缓存溢出,系统停滞了。)从1985年到1987年,由于软件缺陷,一台放射治疗仪向6名患者放射了过量的X射线。在1991年的海湾战争中,在飞毛腿导弹袭来时,由于爱国者导弹的一个电池未能成功点火,敌方导弹击中美国营地,导致28人死亡。调查发现,由于软件中存在一个累积计算错误,经过数百小时的使用之后,爱国者导弹的计数会变得非常大,从而无法点火。

         上述事例以及类似故事数量太少,不足以引起媒体的愤怒和政治上的骚动,但它们却警示着我们对于程序员工作质量的依赖。

         由此更引发了我们对于软件开发过程中的项目组织方式的思考。几十年来,典型的项目组织方式遵循瀑布模型”——将项目切分成为依序进行的多个独立阶段,比如需求定义、设计、实现、集成、测试、和发布。每个阶段需在下个阶段开始前完成。这套做法在纸上看起来合乎逻辑。但是实践起来总是不可避免的导致延误、混乱、和灾难。每个阶段都耗时无算,但每一个工作正常的。程序员们要么坐等需求,要么在拿到需求之前就开始做设计。大设计优先引发大延误,大爆炸式集成”——单独编写代码的各个主要部分,在项目将近结束的时候拼接在一起——导致崩溃。到产品终于完成的那一天,已经过了很久,该程序要解决的问题已经无关紧要了,新的问题又在呼吁解决方案。

         之后又出现了一种螺旋模型的替代方案。将开发切割成为六个月到两年的迭代周期。可更快生产出可工作代码的小瀑布。从部分完成的产品使用中得到反馈、指导下一代迭代。这个模型在大规模政府承包软件开发中逐渐成为标准,但在商业软件的飞速发展中还是太慢。

         20世纪90年代又出现了一种极限编程的开发方式。这中方式强调个体和交互胜于过程和工具,可工作的软件胜于面面俱到的软件,客户协作胜于合同谈判,响应需求胜于遵循计划。尽管后者均有其价值,但是我们还是更关注前者。这种开发方式虽然免去了重量式开发的条条框框,但也给一些程序员找到了一些借口,他们只遵循让他们舒服的规矩。所以在开发过程中出现了很多混乱状态。

         关于开发方式的探索仍在继续。

 

梦断代码阅读笔记01

               梦断代码阅读笔记01                &nbs 查看详情

梦断代码阅读笔记之一

最近阅读了罗森伯格的《梦断代码》,算是近距离观察了十几年前软件开发的状态。这本书是作者对OSAF主持的Chandler项目进行田野调查 而写的一本书。本书是在讲一事,也是在讲百千事;是写一软件,也是在写千百软件。在... 查看详情

《梦断代码》阅读笔记之一

  今天我大致看了《梦断代码》的前两章,内容虽然不多,但是写出了作者的真实写照。我在看到这本书目录时,有点迷惑,为什么开始的一章标为“第0章”呢?在阅读这一章的过程中知道了原因,原来作者只想指出程序员... 查看详情

梦断代码阅读笔记01

第0章软件时间 黑代码:原来程序逻辑中没有的部分,之后加进去的代码。互联网时间:20世纪90年代科技行业的兴盛产生的一个词多指“快速”的意思。软件时间:文中并没有直接给出软件时间的定义。“做软件的过程当中... 查看详情

梦断代码阅读笔记之四

第七章OSAF的第一个“演示日”,看起来并不顺畅的演示,但是却是实现了以往没有过的模块,是工作人员们几个月的心血。而这整个改变正是许多细节都发生改变的结果。用户的错误理解却真实反映出关注细节、无视上下文的... 查看详情

梦断代码阅读笔记之二

在本书第一章里,作者为我们介绍了一些关于开源的历史和开源的开发方式。同时作者为我们对比了传统开发模式与开源开发的优劣之处。这两者的对比能让我们对于软件开发模式有一个更深刻的认识。     &nb... 查看详情

梦断代码阅读笔记之六

第三章--原型与Python我们在编程的前期选择语言的时候是最难过的,这真的是一个痛苦的选择,文中提及很多种语言:C、汇编、Fortran等等。最后,选择了Python语言。在我们的编程过程中也会出现类似的问题,一开始的方向和选... 查看详情

《梦断代码》读书笔记1

《梦断代码》一书记录的是作者罗森伯格对OSAF主持的Chandler项目进行田野调查,通过Chandler开发过程来揭示软件开发过程中一些根本性的大问题。对本书才刚刚阅读了三分之一,就已经忍不住对作者描述的开发过程所感叹,虽然... 查看详情

梦断代码读书笔记

阅读时间:2018年2月5号这次主要是读完梦断代码的的前4章之后,记录下来所得到的感悟。不知道是不是因为没有经历过真正的软件设计,我在读梦断代码的时候感觉到明显的吃力,尽管已经读了大概有4章,还是没有从这4章中提... 查看详情

《深入实践springboot》阅读笔记之三:核心技术源代码分析

...三部分,也是最后一部分。这部分主要讲解核心技术的源代码分析,因为篇幅和能力原因,分析的不会太详细,后续深入研究后再专门写文章。希望大家能从「阅读笔记」3篇文章中,对SpringBoot提供的功能有所了解,在项目中进... 查看详情

03软件构架实践阅读笔记之三

03软件构架实践阅读笔记之三   在上一次的阅读笔记当中,提到了很多关于软件构架的东西,例如:软件构架的周期性等,但是大部分的都是系统的说明,现在,下面看的都是详细的介绍。   在刚开始是构... 查看详情

《软件需求》阅读笔记之三

这几天读的书,主要是讲解的如何降低风险可以利用软件原型这种技术减少客户对产品不满意的风险。一个软件原型是所提出的新产品的部分实现。使用原型有三个主要目的:? 明确并完善需求   原型作为一种需... 查看详情

架构之美阅读笔记之三

      今天我学习的是架构之美的第三章——伸缩性架构设计。这一张也是涉及到了第二部分,企业级用用架构。首先我们要引出,伸缩性架构设计,也就是为什么要伸缩性的架构。主要原因是,我们在设计... 查看详情

阅读笔记5

梦断代码阅读笔记5从狗的需要管束引论到程序员需要管束。工程的质量、进度、成本也需要进行策划决策。质量三角,既好、又快、还便宜,同时满足的事情不太可能发生。软件经理非常重要,他制定进度、推动程序员按进度... 查看详情

梦断代码---读书笔记01

                                 &n 查看详情

《梦断代码》读书笔记

?我这周读完了《梦断代码》,这本书详细讲了Chandler软件的开发过程。在讲团队协作时,作者提到了一本书《大教堂与集市》。《大教堂与集市》的作者认为,重要的软件应该像建大教堂一样,由独立的巫师精心打造,在面世之... 查看详情

03实例化需求阅读笔记之三

这本书给出了做到实例化需求的关键过程模式: 从目标中获取范围——协作定制需求说明——举例说明——提炼需求说明——不需要修改需求说明的自动化验证——频繁验证——演化出一个文档系统。从目标中获取范围:交... 查看详情

梦断代码读书笔记

   笔记(一) 首先,作者一开始就向我们介绍了程序员的真实生活:代码、日期、紧张、焦虑。这是我从书中体会出来代表程序员的词语。我第一次感到编程可能是一件辛苦的事,回想自己编程的时候,只是歇一... 查看详情