《构建之法》读书笔记①

寒假期间在建民老师的推荐下看了这本《构建之法》,今天就之前看过的一部分说一下自己的感受。这本书的阅读是我对所学专业又有了更深的了解。

 软件=程序+软件工程

一个简单的程序加上增加一点要求在增加一点用户,慢慢的就变成了一个工程。这其中是我接触到很多软件开发活动涉及的一些名词(构建管理、源代码管理、软件设计、软件测试和项目管理等)这些是软件工程的核心部分,广义上软件工程也包括用户体验、用户界面设计等,所以扩展推论是:软件企业=软件+商业模式。就像书中说的程序是基本功,在这之上软件工程决定了软件的质量。基本功包括算法和数据结构,可见这二者的重要性,我们应该更加努力提高自己的编程能力,把基本功打的扎实,而不在后期的软件工程学习中导致拖后腿。所谓软件,就是集可维护性,健壮性,使用性等诸多特性于一体的程序与文档的集合体,而在软件开发的过程中存在如下几个阶段:玩具阶段、业余爱好阶段、探索阶段、成熟的产业阶段。根据书中的阶段与软件业的对比我忽然发现自己好像,不,就是存在于玩具阶段(写程序练习数据结构/算法,用新语言尝试Hello World)。由此可见自己的离软件开发还远着呢,所以自己要走的路还很远啊。基础,基本功是最重要的,这也是老师们经常强调的。

书中的一个例子给了我深刻的印象,——商业软件换个爱好者写的程序的区别。作者用飞机的安全工能给我们举的例子“为了节约成本,本次航班没有那些安全设备,没关系的,反正大家也不会用到...”你敢坐吗?反正我是不敢,所以说呢。这就是我们和商业软件的差距。我们还是不够懂软件工程,还不是一个合格的软件工程师..

那么软件工程是什么呢?软件工程具有以下的特殊性:复杂性、不可见性、易变性、服从性、非连续性。这些非本质、临时的特性并不能决定软件工程的本质问题。

就像困扰刚入学时候的我们一样,什么是软件工程,而什么又是计算机科学与技术?在我们心中这些都是编程序,上课学的都是差不多的。在学习一段时间猴,加上我又看了这本《构建之法》,知道了这两门专业的各自的侧重点。计算机理论的进展会帮助软件工程(例如对程序正确性的分析),软件工程的进展(包括更好的工具,更广的应用领域)会帮助计算机科学家更有效的进行试验和探索。

单元测试是我们需要注意的一个点,如果不能表现为一个单元测试用例,就说明程序写的还不够详细。单元测试要准确、快速的保证程序基本模块的正确性。单元测试应该在最基本的功能或参数上验证程序的正确性;必须由最熟悉代码的人来写;测试过后,机器状态要保持不变;测试要尽可能的快;应该可重复一致的结果。除此之外我们还要知道例如回归测试、性能分析等。

原文地址:https://www.cnblogs.com/xhxdeblog/p/6359007.html