2018-2019-1 20189215 《构建之法》第一章学习总结

2018-2019-1 20189215 《构建之法》第一章学习总结

教材学习内容总结

  1. 程序 = 数据结构 + 算法
    软件 = 程序 + 软件工程
    软件企业 = 软件 + 商业模式
  2. 程序(算法、数据结构)是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量。
  3. 软件开发有四个阶段:玩具阶段、业余爱好阶段、探索阶段、成熟的产业阶段。我现在还停留在业余爱好阶段,希望通过《构建之法 》这本书提升自己,早日开始钻研新技术,开拓创新,进入探索阶段。
  4. 软件开发过程中的难题:复杂性、易变性、服从性、非连续性。
  5. 工程定义:创造性地运用科学原理,设计和实现建筑、机器、装置或生产过程;或者是在实践中使用一个或多个上述实体;或者是实现这些实体的过程。

教材学习中的问题和解决过程

  • 问题1:Null Reference。作者提到了托尼·霍尔,据他本人反省,他在20世纪60年代设计Algol W语言的时候引入了Null Rrference,对后来编程语言影响很大,他自己估计给工业界造成的损失应该在10亿美元以上。这段内容没接触过,看不懂。
  • 问题1解决方案:查阅资料,发现我们在代码中使用的NULL值,在其设计者本人看来,是一个“十亿美元的错误”。这一点让我明白,即使是技术大牛,也有可能出现错误,与计算机打交道,理论与实践是并重的。

“我把 Null 引用称为自己的十亿美元错误。它的发明是在1965 年,那时我用一个面向对象语言( ALGOL W )设计了第一个全面的引用类型系统。我的目的是确保所有引用的使用都是绝对安全的,编译器会自动进行检查。但是我未能抵御住诱惑,加入了Null引用,仅仅是因为实现起来非常容易。它导致了数不清的错误、漏洞和系统崩溃,可能在之后 40 年中造成了十亿美元的损失。近年来,大家开始使用各种程序分析程序,比如微软的 PREfix 和 PREfast 来检查引用,如果存在为非 Null 的风险时就提出警告。更新的程序设计语言比如 Spec# 已经引入了非 Null 引用的声明。这正是我在1965年拒绝的解决方案。”
—— 《Null References: The Billion Dollar Mistake》托尼·霍尔(Tony Hoare),图灵奖得主

  • 问题2:冒烟测试。
  • 问题2解决方案:这一术语源自硬件行业。对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试。在软件中,“冒烟测试”这一术语描述的是在将代码更改嵌入到产品的源树中之前对这些更改进行验证的过程。在检查了代码后,冒烟测试是确定和修复软件缺陷的最经济有效的方法。冒烟测试设计用于确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性。

代码调试中的问题和解决过程

本书学习中目前还没有代码。

[代码托管]

本书学习中目前还没有代码。github链接为:https://github.com/jsjliyang 日后有代码会进行托管。

其他

《构建之法》第一章概述,从软件工程的角度,介绍了软件开发的流程,以及软件工程与计算机科学的区别。曾经听同学讲到,国内几乎没有真正的计算机科学(CS),我本科时所属学院全称为“计算机与信息技术学院”,所学科目大多为计算机的基础知识及一些开发实际应用的东西,和真正的CS还是有所区别。不过《构建之法》告诉我,不需要纠结“科学”和“工程”的问题,在不同的学习与工作阶段,投入到最合适的项目类型中去就足矣。

学习进度条

章节数(新增/累积) 博客量(新增/累积)
目标 共17章 共17篇
2018.10.23 1/1 1/1

计划在本学期读完,希望自己可以做到。

参考资料

原文地址:https://www.cnblogs.com/jsjliyang/p/9837612.html