阅读《构建之法》1-5章有感
这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2178
在这个愉悦的国庆小长假,我仔细阅读了《构建之法》1-5章,对软件工程有了新的认识,现在就1-5章发表我的看法
第1章:概论
在这一章我明白所谓的程序就是数据结构+算法、软件即程序+软件工程、软件企业即软件+商业模式。程序包括算法、数据结构是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量,商业模式决定了一个软件企业的成败。这可以说是整个构建之法的核心。软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
我看了这一段文字 :什么是好的软件?一些同学认为,所谓好的软件,就是软件没有缺陷(BUG),所谓软件工程,就是把软件中的BUG消灭掉的过程。我认为,只要没有bug的软件就算是好的软件了吗,有没有其他的衡量标准呢?于是,我再网上查了其他的见解,如下:
要衡量一款软件是不是好软件,可以从以下几个方面来判断:
首先是使用方法要简单,一款性能优越的软件,在使用方法上是很简单的,初次使用也能够在短期内就可以上手使用。
其次就是功能全面,这也是软件的灵魂所在。一款好的软件要满足使用者的各方面的个性需求。因为使用者的行业不同,对象不同,因此产生了各种各样的使用软件,可以完成不同任务的软件。比如您说的你是饲料厂的。那么您的需求可能就是需要财务管理方面的软件,也或者是需要饲料生产管理流程监控管理的软件,也可能是需要行政管理的软件。某些软件是可以在各个行业通用的,但是某些软件是依据使用者个性需求单独开发定制的软件。
还有就是对软件后期维护,软件升级换代比较及时,省心。软件维护是决定着它可不可以正常使用,能不能发挥出软件的全部性能。还有软件的升级是可以弥补软件自身的某些缺陷和不足,因此这两个因素也是非常重要的。
根据我自己的经验:作为一个多年的软件用户使用者,我认为一个好的软件应该是使用比较简单,界面比较美观,功能合理,运行快速,作为一个软件开发者的角度,我认为一个好的软件应该是可维护性强,可扩张性强。
第2章:个人技术和流程
这一章,作者主要讲了理论和知识点包括单元测试、回归测试、效能分析、个人软件和开发流程(PSP)
我看了一个问题:什么才算好的单元测试?单元测试应该准确、快速保证程序基本模块的正确性。抱着对单元测试的具体做法,我在网上查了其他见解如下:
1,不能只测试一条正确执行路径,要考虑到所有可能的情况
2,要确保所有测试都能够通过,避免间接损害
3,如果一个函数复杂到无法单测,那就说明模块的抽象有问题
4,配置不是单元测试的难点,难点是mock(后文讲),做单元测试需要伪造被测函数用到的大部分函数
但其实我还是看不太懂单元测试,因为平时写代码的时候没有运用到单元测试,所以bug有时候是在使用的时候才出来,所以现在认真学习了这些方法,再接下来的代码创作中加以运用。
第3章:软件工程师的成长
本章讲的时候关于如何成为一个好的软件工程师,以及一些思维误区,写的比较通透,容易看懂
文中我看到一个问题,就是一个工程师开了博客,转发了许多别人的文章,这算是有思想吗?网上有许多答复,最多且最规范的答复差不多于下:
思路开阔,独树一帜,有很好的创新能力。往往能提出很好的点子,提出很好的方案,等等
但是我觉得在这个领域,不一定是这样才叫有思想,我觉得转发别的文章是对别人文章的赞同,一般资深的软件工程师转发别人的博客都是自己看完,根据自己的知识判断,才分享给大家看,所以这不算是一般意义上的分享不是一些毒鸡汤,我觉得只要把好的思想别人好的创作,在你接受后,可以对此加以应用,应用的更好,就算是有思想了,简之:理解掌握,加以运用。
第4章 两人合作
本章讲的是关于代码规范、权限编程、结对编程、两个人合作的不同阶段,比较实际,因为接下来不管什么课程做作业,都是团队合作,学习了这一些技巧,就可以更好的合作取得更好的工作效率
其中我非常同意这句话:人不能同时踏入同一条河,程序员不能同时犯两次错误。在代码复审后,开发者应该把复审的过程整理出来
1.更正明显的错误
2.对于无法很快更正的错误,要在项目管理软件中创建BUG,把他们记录下来
3.把所有的错误记在自己的一个“常犯错误”表里面,作为自我审核的第一共
因为我写过一些代码量,我觉得每个程序员都有一些思维误区,在写的代码量比较多的时候都容易出现,第一次犯错误的时候不管是语法错误还是逻辑错误,一定瑶把错误记下来,加以消化,不然改过之后就匆匆带过,其实这样以后写代码的时候还是会出现类似的错误,工作效率反而不高。
第5章:团队和流程
第五章讲的是团队还有非团队,软件团队的模式,开发流程等相关注意事项...
其中看到了一定专业名词的定义
MVP(Minimum Viable Product)方法是指:念是用最低的成本,设计完成你的产品,并且把它用最快的速度放到市场上测试是否可行。对这个概念,我非常感兴趣,所以我网上查找了更多关于MVP的资料:
总结
阅读了前五章的内容之后,解答了我很多有关于软件工程这一学科的疑惑,了解到了关于软件工程这一门学科更多的知识,在接下的软件开发中,要对此加以更多的应用,把软件做到规范化符合软件工程的定义。