构建之法阅读笔记03

有关《构建之法》的阅读笔记,总体感受是,越到后面感觉越是工作问题,就越是注重实践,越是重点的问题

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

那么软件工程是什么呢?软件工程具有以下的特殊性:复杂性、不可见性、易变性、服从性、非连续性。这些非本质、临时的特性并不能决定软件工程的本质问题。就像困扰刚入学时候的我们一样,什么是软件工程,而什么又是计算机科学与技术?在我们心中这些都是编程序,上课学的都是差不多的。在学习一段时间猴,加上我又看了这本《构建之法》,知道了这两门专业的各自的侧重点。计算机理论的进展会帮助软件工程(例如对程序正确性的分析),软件工程的进展(包括更好的工具,更广的应用领域)会帮助计算机科学家更有效的进行试验和探索。

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

在第十一章开头的时候就说明了我们写软件的目的:我们写软件就是要解决用户的需求并且分清实体与抽象,就像文中所介绍的”鸡兔同笼“和”果冻搬砖“一样,理解抽象和现实,并且学会构造模型,学会绘制思维导图。而给我印象最深刻的是十六章,在第十六章IT行业的创新中作者提到:统计数据表明,70%的创新者说,他们最成功的创新,是在他们的拿手领域之外发现的。另一个意思就是他们并不是这个领域的专家。而一些计算机专家认为这不是创新,甚至说原理简单,不屑于搞。但事实证明这一创新改变了世界。诺基亚的产品覆盖了木材相关产品、橡胶、电力产品、电脑、军事产品,等等。后来因为经济困难,卖掉所有和通信不相关的产品线,用15的时间成为了世界上最大的手机通信企业。索尼一直做收录机,创始人盛田昭夫推出"单放机"即随身听。取名字为"Walkman",语言专家说不符合语法,盛田坚持自己想法,Walkman吸引了众多消费者,在其生命周期,卖出了2.2亿台。

  这些例子都说明了领域内的专家有时没有领域外的创新者有创意。我想更多的是没有从实际出发考虑顾客和群众的感受,就像有时候我们做题一样,看一遍题知道了它应该用什么公式,用什么原理去解答,然而就是实际动笔去解,真正到了考试,我们碰到同样的问题,也就只能停留在:"这道题我当时碰到过!"却迟迟解不出来。所以创新的前提是实践,不能停留在想法上。

原文地址:https://www.cnblogs.com/aiyyue/p/13083925.html