阅读《构建之法》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的资料:

我们做的产品是互联网领域的,所以就以一个互联网产品举例,要做出一款互联网产品,从调研、产品规划、设计、开发、到测试,再到推向市场,往往周期都比较长。参与过这其中变数太多,大家对于需求的理解多种多样,做出来的产品满足需求的可能性很小,成功率非常低。这里有很多失败的经典例子,大家可以搜一下,引以为戒。但做一个产品,确实需要这么多步骤,产品经理、设计师、开发测试、市场推广。一个一个步骤走下来,是不是很无奈?所以是时候转变一下思路:开发产品时先做出一个简单的原型——最小化可行产品,然后通过测试并收集用户的反馈,快速迭代,不断修正产品,最终适应市场的需求。
 
因为现在竞争巨大,我们软件创业初期面临的压力巨大,所以需要掌握一些科学的方法去开发产品,针对次方法我找到了两本书如下:《设计冲刺,谷歌风投如何5天完成产品迭代》、《精益创业》

 


 

总结

阅读了前五章的内容之后,解答了我很多有关于软件工程这一学科的疑惑,了解到了关于软件工程这一门学科更多的知识,在接下的软件开发中,要对此加以更多的应用,把软件做到规范化符合软件工程的定义。

posted on 2018-10-08 11:33  冷冻  阅读(109)  评论(1编辑  收藏  举报

导航