读一、二及十六章之后的思考

时间:2021-01-31 06:46:50

第一章 概论

  我阅读了P15/1.2.4软件工程的目标——创造"足够好"的软件。有如下问题:

  1.什么样的软件才是一个好的软件?

  2.bug的定义。

  书中讲到,什么是好的软件?一些同学认为,所谓好软件,就是软件没有缺陷(Bug),所谓软件工程,就是把软件中的Bug都消灭掉的过程。这的确是专注了软件工程的一个要素。 

  我在百度和知乎上都进行了搜索,我搜索了“什么是好的软件”和“好的软件的定义”等等,都没有找到一个完整的精确的定义。百度推送给我的都是“什么是最好的ps软件”,“什么是最好的交友软件”等等。我心里想,一个软件的用户体验是多么的重要啊。用户不会去关心你的程序是Java写的,还是Python写的,也不会去考虑一些数据结构和算法,他只会直观的感觉到:这个软件好用,我觉得舒服,我就会用它,我就会推荐给别人。如果让我自己去定义什么是好的软件,我会将它定义为:用户满意度越高的软件就是越好的软件。

  但是我还是特别想知道别人对这个问题的思考与看法,最后在百度了“如何评估软件优劣”后,终于搜索到了有关内容。(ps:搜索也是一门艺术与技能,搜索能力强的人总会在最短的时间找到自己想要的内容,我的搜索能力急需提高呀)以下这篇博客我觉得写得特别赞:

如何评价软件好不好,有哪些评判的指标 http://blog.csdn.net/husthl/article/details/7841830

  在谈软件优劣问题时,特别多的人提到了软件质量这一概念。以下这篇博客分享给大家:

如何对软件质量进行评估?http://blog.csdn.net/Shimizu/article/details/337167?locationNum=2&fps=1

  上文提到,什么是好的软件?一些同学认为,所谓好软件,就是软件没有缺陷(Bug),所谓软件工程,就是把软件中的Bug都消灭掉的过程。这的确是专注了软件工程的一个要素。

  我在想到底什么是bug,怎样才算是bug?我查阅了资料,百度百科上讲:所谓“(Bug)”,是指电脑系统的硬件、系统软件(如操作系统)或应用软件(如文字处理软件)出错。硬件的出错有两个原因,一是设计错误,一是硬件部件老化失效等。

  在书中P16中写到:什么是Bug呢?简单的说,软件的行为和用户的期望值不一样,就叫Bug。是否是Bug,取决于用户、开发者的不同角度。但是在这里我有个小小的疑惑:作者在定义bug的时候是仅仅从用户的角度出发的,但是接下来作者说“是否是Bug,取决于用户、开发者的不同角度。”我很同意作者“简单的说,软件的行为和用户的期望值不一样,就叫Bug。”这个定义。也同意作者“是否是Bug,取决于用户、开发者的不同角度。”这个定义。但是我总觉得这是两个有冲突的定义。对这个问题我计较困惑,有点钻牛角尖。

 

第二章  个人技术和流程

  这一章,我看着比较困难,因为很多的专业名词都没有听过。单元测试,回归测试,效能分析等等。阅读完之后,我想问,公司都有专业的测试人员,为什么还要自己写?

  作者在P25页写道:单元测试必须由最熟悉代码的人(程序的作者)来写。代码的作者最了解代码的目的、特点和实现的局限性。所以,写单元测试没有比作者更适合的人选了。我查阅了百度,博主比较了二者:

  开发写单测

  优:开发对代码最熟悉,而且开发技能也强,开发自己写单元测试效率上和覆盖率上都比较高。而且单元测试有时候需要开发对代码进行部分重构才方便进行,开发自己做这些重构也比较顺手。

  缺:开发平时写业务代码就忙不过来了,哪有时间写单元测试?而且大部分开发没有太好的测试思想,单元测试可能只是写个最简单的用例就完了,最终可能单元测试通过,但基本的功能还是有问题,这样的单测没有太大作用。

  测试写单测

  优:测试有比较好的测试思想,可以更好地保证用例的覆盖。而且通过写单测测试能更好地了解具体代码结构、流程,对于后续的业务测试也有利。

  缺:有比较好代码能力的测试人员不多,而且测试对代码没有开发熟悉,遇上为了可测性需要重构的时候还是得开发花时间配合。效率上不如开发自己写。

  以我个人观点,我觉得单元测试还是交给专门测试人员。

 十六章 IT行业的创新

  阅读了第十六章之后,我提出了该问题:

  普通人与创新者的区别在哪里?

  我看了P340,P341和P354提出了问题:“普通人与创新者的区别在哪里?”我查阅了百度觉得这个人写的特别好,分享给大家:https://baijiahao.baidu.com/s?id=1540545508750142&wfr=spider&for=pcP340下面是我的拙见:

  P340中说,灵光一闪现,伟大的创新就紧随其后。P341中讲:这些故事很有意思,但是他们没有提到这些科学巨人在顿悟之前已经在相关学科打下了深厚的基础.......他会顿悟吗?我觉得普通人与创新者的区别之一就是创新者是厚积薄发,在某一刻顿悟而已。而普通人并不注重积累,只会在等一个让自己发现真理的契机,然而这并不可能。

  P354中讲,创新人事不满足于“就是这样”,而是探究“为何会这样,如果换一个方式会怎样?”我觉得普通人与创新者的区别之二就是创新人士不满足于现状,有强烈的好奇心。普通人会想:就这样吧,这样已经很好了。

  P355中讲:“做得不一样很容易,做的更好才是非常困难的”。好多人都在创新,但是最后得到的却是四个字:创新失败。于是也便剥夺了他的创新者的称号。的确如此,同类产品那么多,不是你坚持就可以得到创业家的称号,如果在手机盛行的阶段你创新出来一部电台,意义又在哪里呢?

  可口可乐公司一个配方用了几十年,至今仍是巨头,他们不愿意创新口味吗?当然不是,只不过在他们创新口味了之后遭到了广大人民群众的不认可,创新失败。如同作者讲的,创新者不躲避风险,而是从错误中恢复并继续努力。

 注:红色微软雅黑斜体为参考博文,红色微软雅黑非斜体为原文。观点不太成熟,请老师同学们指教!谢谢大家!