【软件工程】阅读《构建之法》1-5章的感想
作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2178
第1章
其实第一章就是在解释软件工程的内涵,好比如软件=程序+软件工程,程序=数据结构+算法。。。
在1. 2.5节中说到了一个问题:什么 是好的软件? 文中的答案是:软件没有缺陷.
我个人觉得这是有点片面的,再者,如果软件没有缺陷的话怎么会需要后期维护,而且软件都是有周期性的,好比如去年你使用的货币是纸币,今年你使用的货币是电子货币,这两者是货币,只不过是因为时代的发展方式不同而已,但是你不能要求一个专注于纸币的软件突然翻改成电子货币的吧,这已经不是原来那个软件的构建了,你能看到的就是一个全新的软件,这跟原来那个其实关系不大。再找了度娘,她告诉了我比较全面且让我认可的答案。
真正的好软件在于:
1.操作方便,简单易用
2.功能全面,起码在某个方面是很完善的,好比如滴滴,在打车的道路上因没有完善好某些功能导致些许翻车造成悲剧
3.拓展性强 也就是文中提到的易维护性
第2章
第二章告诉我们单元测试,回归测试,效能分析和个人软件开发流程等等。。。
在2.1节中说到“软件的很多错误都来源于程序员对模块功能的误解,疏忽或不了解模块的变化。”我觉得很有道理, 毕竟做的东西不止要自己看得懂,还有别人也要看得懂,好比如模块之间的功能明确,我倒觉得命名是一个有利于理解模块的功能的有效工具,比如模块命令为SaveActivity,Md5Utils,大概一看就知道这个模块是在做什么东西了。这也就涉及到代码的规范了。。
在2.3节说明了个人开发流程,软件工程师比大四学生多读了三年书,多工作了3年,在需求分析和测试上明显得花了更多时间。而工程师与学生的区别在于编程上工程师所花的时间相对于学生少,担在测试上多。那尽管比学生有优势的工程师就能算上优秀的工程师了吗?
我的疑惑是:软件开发时必须要有需求分析和测试,假如我把理想中的软件做好了再去弄测试会有怎么样的后果呢?
第3章
第三章主要了解了软件工程师的成长,和如何去衡量自己的能力与价值。
一个人的成长离不开一个团体,在一个开发团队中,所需要的技术是要不一样的。就好比如踢足球,总要有人专门负责守门,有人传球这样,才能让一个团队蓬勃发展。那怎么样去衡量一个人在某一块的技术层面上是可以的,按文中的话讲就是靠技术赚钱,证明其技术是专业的。
初级软件工程师的成长可以通过积累软件开发相关的知识,经验,和实战结果,从时间,缺陷等质量去评估自我能力,从而进一步去提升自身的技术水平,但是工程师也只是工程师,我更想知道什么样的数据能说明一个软件工程师是优秀的?
第4章
第四章是说两个合作的事情
我觉得这章有点意思,相对于我们的专业,我们很多大作业就是组队做,这本来是一件好事,但是因为合作也是容易产生矛盾,好比如我写的是这个意思,然后别人看到的理解到的就是另一个意思,然后就一直错下去,结果就需要重头再来,这就是代码规范的重要性吧,我前面也已经有说到了,我自身也觉得有必要,代码规范之后可读性高,能让别人更好地理解和维护程序。代码好比一个人的习惯,习惯决定命运。因此,写程序时要特别注意代码规范。如果把这个问题能够解决的话,其实合作上更多会是思想上的冲突,就是我想这样做,你想那样做,那最后到底要哪样做的一种交流沟通。再者合作的好处除了有更多的想法之外,还能使得彼此在这方面上更上一层楼。
代码复审能够解决一些隐藏的bug和看其是否符合开发规范,会对软件后期的维护产生重要影响,同时也会影响用户体验,这没有什么问题
主要是:什么时候才能算复审成功,或是说,复审到什么程度之后就可以进入下一个环节了?在代码复审后,我们把复审过程中的记录整理出来,从中去解决,但是不断重复这个过程花的时间和精力也是很多的。好比如写一个c程序,代码几千行,运行的结果没什么问题,但是从中会出现一些warnning的提示,是否我们都要把每一个warnning解决掉?
第5章
第五章讲的是团队模式,有主治医师模式,明星模式,社区模式,写了再改模式等等。
我的疑惑是:有这么多模式,那哪一种才是最好的团队模式呢?我觉得其实很难去评定哪种模式的最好的,好比如一个初生公司,一开始的模式可能会是主治医师模式,但是当公司做大了,可能就会变成功能团队模式了,这都是不同时期下造就不同的模式,只能说,哪种合适现状的哪种就是最好的。瀑布模型一开始也是单向,不可逆的生成模型,但是当他发现这种模型是满足不了需求的,难以去修改,于是出现了生鱼片模型。但是我还是不太明白:团队的最好状态是各会其能呢,还是样样都会?
顺带分享最近看到的两篇比较实际的文章:
一个好的新人工程师是什么样子https://www.jianshu.com/p/63afdfc1efe8
给软件开发初学者https://www.jianshu.com/p/353afbe45017
看完可以想想是否继续走程序员的路了。。。。