第一章
问题一:1.2.4软件工程的目标--创造"足够好"的软件
什么是好软件?
原文1.一些同学认为,所谓好软件,就是软件没有Bug,所谓软件工程,就是把软件中的Bug都消灭掉的过程。
软件的行为和用户的期望值不一样就叫Bug。
原文2.Bug的多少可以直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性。
首先对于第一点来说,我觉得无论多么好的一个软件或多或少都会有Bug,只不过是在用户体验的过程中让用户尽可能少的感受到缺陷,尽可能提高用户的使用效率,这就是一个足够好的软件。而软件的行为和用户的期望值,我认为是针对开发者群体和用户群体来说的。对开发者来说通过一定的软件流程,在预计时间内发布出符合用户需求,可维护、可继续发展的软件就是创造了一款比较好的软件,但是一旦用户增加可能会引发系统崩溃等一系列问题,这就是Bug。对于用户来说,用户希望的是随时都能让软件正常使用,满足自己的需求,一旦软件出现问题,不能满足用户的需要,也是Bug。就比如说火车购票的软件,我认为那是一个非常优秀的软件,高峰时期一秒钟可以出售700张车票,这对一个业界的开发者来说做的已经很优秀了。但是面对强大的购票群体来说,一秒钟700张票仍然无法满足人们的需求,与用户的期望不一样,也是一种BUG。
第二点对于现阶段的我来说这些概念可能会比较深一点,比如说我现在所接触到的东西是一些简单的前后端开发,我们在运行的过程中遇见的比较普通的错误,找到错误位置,增加一点或者删除一点就好了。但是对于那种比较大的项目来说,我们应该如何通过Bug从代码的角度更加细致更加具体的来分析软件的开发效率、可靠性和可维护性,衡量软件是否足够好。还有就是,我们应该如何构建出这种开发体系?
第二章
个人感觉第二章有点不太懂,看了几遍还是很懵。刚看的时候就觉得一直在题代码覆盖率,但是不是很清楚是什么概念,然后看了几篇博客,有了简单的认识,还有单元测试、回归测试、效能分析这些概念感觉比较新,需要点时间来详细了解。
代码覆盖率浅谈:http://www.cnblogs.com/coderzh/archive/2009/03/29/1424344.html
代码覆盖率分析:http://blog.csdn.net/ffeiffei/article/details/6579280
如何编写单元测试:http://www.cnblogs.com/mq0036/p/4100084.html
问题一:
通常代码覆盖率被拿来作为衡量单元测试好坏的指标。
原文1.单元测试应覆盖所测单元的所有代码路径,包括错误处理路径。为了保证代码覆盖率,单元测试必须测试公开的和私有的函数/方法。
原文2.100%的代码覆盖率并不等同于100%的正确性!
结合我在博客上看到的,我的问题是即使软件的代码覆盖率达到了100%,但是会存在那些应该写却没有写的代码,这样代码中就仍然有BUG无法解决,所以用代码覆盖率来衡量测试单元的好坏还有效吗?
问题二:
效能分析还有点不是很明白,我的理解是通过抽样或者代码注入进行分析,降低程序的时间空间复杂度,从而提高程序运行速度。但是这个操作方法可能还不是很懂,希望有深入的理解!
问题三:
原文1.软件的设计原则之一是开放--封闭原则。
允许扩展。当应用的需求发生改变时,我们可以对模块进行扩展。
不允许修改。对模块行为进行扩展时,不必改变模块的本身。
分享几个我觉得很好的博客
开放封闭原则http://blog.csdn.net/yqj2065/article/details/53508056
浅谈Java的开放封闭原则https://www.cnblogs.com/chenmo-xpw/p/6649246.html
第16章
问题一:迷思之二:大家都喜欢创新
原文1.程序员们都坚信,没有一门高级语言能像汇编语言那样完美地完成工作。
其实我觉得技术每天都在变化,软件的功能也在不断地完善,新的语言也在出现。我们也应该对其他语言有所了解,就比如说最近几年特别火的Python,以前人们总是说C和Java是无可替代的,但是自从人工智能火了以后,Python就进入了大众视野,人们用Python写网络爬虫等,效率有了很大的提高。所以我们做软件开发也不应该仅仅局限于JAVA,也应该适当地学习一下其它语言。
原文地址:https://www.cnblogs.com/BoscoJK/p/8592579.html