《构建之法》第十六章阅读笔记

boscojk boscojk     2022-10-25     463

关键词:

 

 

 

 

 

 

 

第一章

 

问题一: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,以前人们总是说CJava是无可替代的,但是自从人工智能火了以后,Python就进入了大众视野,人们用Python写网络爬虫等,效率有了很大的提高。所以我们做软件开发也不应该仅仅局限于JAVA,也应该适当地学习一下其它语言。

《构建之法》第十六章阅读与思考

第一章  概论  市面上有很多种赚钱的方式:有的交钱买断有的“先试用再交钱”,有些软件也提供试用版、免费版和正式版,还有的类似期刊订阅,每年交钱。有的不但免费,连源代码也一并奉送,但是要求获得... 查看详情

构建之法第十六章(代码片段)

《构建之法》第一、二、十六章疑问我通过阅读发现这是一本十分有趣的书。不同于别的书的晦涩难懂,《构建之法》利用浅显易懂的语言,贴近生活的例子向我们讲述了软件工程的内容。第一章 概论软件=程序+软件工程扩... 查看详情

关于构建之法第第二与第十六章阅读疑惑

第一章、概论 原文的1.2.1节中有说到软件的不可见性,其中有这么一段描述:“商用软件出现了错误,工程师可以看到程序在出错的一瞬间留下的一些痕迹(错误代号、大致的目标代码位置、错误信息),但是几乎无法完整... 查看详情

《构建之法》第十六章读后感更正

第十六章IT行业的创新1.关于灵感。灵光闪现固然重要,很多伟大的发明依靠的就是灵光一现的基础,但是灵光闪现的前提是个人的思考,长时间的思考。完成这一灵光的基础是不断的尝试,提高自己的技术。这样才会将自己的... 查看详情

读《构建之法》之一,二,十六章有感

...终将得到自己的一份收获。   这几天阅读了《构建之法》的第一,二,十六章,我个人的阅读速度应该属于比较慢的那种,遇到什么不确定的,不理解的概念总要停下来好久,各种百度,否则继续阅读的时候总有种急... 查看详情

20171104-构建之法:现代软件工程-阅读笔记3

本周阅读了《构建之法》第六章。第六章讲了敏捷流程的相关知识看了第六章了解到敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个... 查看详情

构建之法阅读笔记02

  在读过构建之法的第六章和第七章是讲敏捷流程和MSF.  敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过... 查看详情

《构建之法》阅读笔记

阅读第六章所得: 敏捷过程在我的理解之内是更“圆滑”一些,为了成为敏捷的团队,则需要作出改变:自主管理(从领导布置任务到自己挑选任务,并总结不足,提出改进并且自己要实施这些改进)、自我组织(从做好自... 查看详情

03构建之法阅读笔记

本周阅读了《构建之法》五、六、七章。 第五章讲了几种软件团队的模式、软件开发流程;第六章讲了敏捷流程的相关知识;第七章的内容是关于微软解决方案框架(MSF)的。邹欣老师的这本书,写得形象生动,第五章用体育... 查看详情

构建之法阅读笔记05

第十一章讲到的是软件设计与实现分析和设计的方法:文字为主的文档,如word、Powerpoint文档。正如我们在需求分析和场景设计中看到的那样。用图形为主构造的模型,如MindMap(思维导图),ERD,DFD,UML的各种图,甚至包括FlowChar... 查看详情

《20171214-构建之法:现代软件工程-阅读笔记3》

第六章敏捷流程敏捷开发的原则1.尽早并持续的交付有价值的软件已满足顾客要求2.敏捷流程欢迎需求的变化,病利用这种变化来提高用户的竞争优势3.经常发布可用软件,发布间隔可以从几周到几个月,能短则短4.业务人员和开... 查看详情

构建之法阅读笔记06

...分类各种测试方法 单元测试 代码覆盖率测试 构建验证测试 验收测试 “探索式”的测试 回归测试 场景/集成/系统测试 伙伴测试 效能测试(1、设计负载2、令用户 查看详情

《构建之法》阅读笔记6

 最后一次写阅读笔记了。 第十五章:IT行业的创新 最近几年,整个社会对创新似乎都很感兴趣,而对于IT行业的创新,有一些传说(Myth,迷思)。灵光一闪现,伟大的创新就紧随其后;大家都喜欢创新;好的想法会... 查看详情

week4-作业1:《构建之法》第四章第十七章阅读笔记与思考

第四章 两人合作  这一章是讲述了两人结对编程的一些东西,包括一些代码的规范,还有结对编程的优点、怎么做、以及一些注意事项。1、“错误处理当程序的主要功能实现后,一些程序员会乐观地估计只需要另外20... 查看详情

20171128-构建之法:现代软件工程-阅读笔记

第十三章-软件测试  基本名词解释及分类:    Bug:软件的缺陷;    TestCase:测试用例;    TestSuite:测试用例集;  Bug可分解为:症状【Symptom】:即从用户的角度看,软件出了什么问题;       ... 查看详情

20171006-构建之法:现代软件工程-阅读笔记

  因为这本书前三章的内容激起了我继续往下读的欲望,于是根据自己的规划又看了第四章至第六章的内容记录了如下觉得重要的知识点:代码复审的步骤(复审前、复审中、复审后)伙伴复审与结对编程的区别软件团队的模... 查看详情

阅读构建之法第六章

    这一小节中有一个图表,对比了敏捷(Agile)、计划驱动(Plan-driven)、形式化的开发方法(FormalMethod)的适用范围。里面提到的形式化的开发方法,其基本步骤是怎样的呢?为什么它能有极高的可靠性呢?下... 查看详情

算法导论笔记——第十六章贪心算法

通常用于最优化问题,我们做出一组选择来达到最优解。每步都追求局部最优。对很多问题都能求得最优解,而且速度比动态规划方法快得多。 16.1活动选择问题按结束时间排序,然后选择兼容活动。定理16.1考虑任意非空子... 查看详情