这几天阅读了《构建之法》中的几章,受益匪浅,刷新了很多我对软件工程的认知。这本书让我很惊喜,阅读起来不像其他书一样枯燥,有很多人物的设计,以及对话的形式,非常有趣。
第一章、概述
读完第一章了解了软件工程具体是什么,以及它与类似计算机科学等的区别,还有对bug的定义,以前觉得软件工程和计算机差不多,看了书过后才发现其中的不同,一个比较偏科研,一个比较偏实践,悟清了许多之后,还有一些不太能明白的问题:
问题1:
我看了这一段文字 “中国大陆的高校中大致有下面三种将计算机软件的机构:计算机科学与技术系或学院、软件学院、软件工程系或学院”,我还是不太能明白这三个的区别,在阅读后我了解到了软件工程和计算机科学的区别,但是软件和其他两个的区别还是很模糊,特别是软件学院与软件工程学院,我们总是将它们是看成一体,书里说“软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。”而“软件=程序+软件工程”,那么软件工程系对于比软件的亮点在哪里呐?软件工程为什么不是和程序相交叉的东西,而是可以分离的两个内容?
问题2:
我看到“如果一架民用飞机上有需求,用户使用它的概率是百万分之一,你还要做这个功能么?你会选择:1.根本不考虑 2.如果没时间实现这个功能,就算了 3.做了,但是不告诉用户 4.做了,而且不厌其烦地告诉用户如何使用”,第一次看到这里的时候我毫不犹豫选择了4,但当我看完了第十六章后,又有了一个困惑,因为很多东西做出来,不仅要考虑市场需要,还要考虑效益,还有其他许许多多一系列的问题,那么如果一个功能用到的概率几乎为零,那么考虑到效益以及人力,我们究竟需不需要做这个功能呢?就像我们吃烧烤,烧烤是会致癌的,但是几率也很小。有很多创新功能其实是可以更好地服务,但是成本很高,用到的几率又小,我们该怎么选择?
第二章、个人技术和流程
看了第二章了解到个人开发需要做什么,看过才体会到软件工程真的是很复杂,各种测试,不仅仅只是写代码而已,每一类都需要测试,这样才能保证在之后如果有问题出现能够更加快捷地找到错误所在。
问题1:
在看完了单元测试后,单元测试是无论哪个程序都需要吗?简单的程序也需要吗?我感觉单元测试是很麻烦的,细化到类。我看了一些资料后发现当今程序员并不是太爱写单元测试,那有什么现实的缺陷?
问题2:
在看到“单元测试应该集成到自动测试的框架中。”我不太明白在这么复杂的情况里如何自动化呢?这样会不会引出其他的错误?
第十六章、IT行业的创新
看过这一章了解到创新在IT行业的困难,以前一直以为创新都是很受支持与推崇的事,没想到却有这么多绊脚石,现实要考虑的因素是非常大的,要考虑到资金问题,效益问题,甚至是政治问题,创新还要经过方法的计算来考虑究竟要不要做这个创新,究竟应该在哪方面创新也是很大的问题。
问题1:
我们从小到大受到的教育都告诉我们要创新,那么现在我们究竟应该怎么做呢?创新是为了未来未来更好地服务人类还是只为了收益?那么创新的意义到底是什么呢?