代码改变世界

阅读《构建之法》第1-5章有感

2018-10-07 15:58  CMis180kg  阅读(219)  评论(3编辑  收藏  举报

 

此作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2178


第一章 概论

      此章,从软件的组成和什么是软件工程两个方面给我们讲述了计算机科学的领域、软件工程与计算机科学的关系、软件的特征以及以及软件工程的定义和组成部分。

      1.1节标题“软件=程序+软件工程”;什么是软件工程?书中给出的概念是:软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。 什么是程序?书中也给出的解析是:几乎所有的程序员都知道程序=数据结构+算法。程序由程序员编写,软件工程是一个过程;那么软件是否可以理解为:程序员编写的代码成型后所经历的一个生命周期的过程?当然这个生命的周期是可以在软件的运营和不断的维护上无限延长的。软件的开发、运营和维护离不开一个重要的角色——程序员。我们学的是软件工程专业,初衷都是想要成为程序员,可现实是我们发现我们成不了程序员了,专业也转不了了;我们还有其他在这个专业上的出路吗?老师们是否应该给这一部分的学生一些指引?

      1.2.4节提一个问题:什么是好的软件?没有缺陷的软件就是好软件?那已开发被使用的软件中没有好的软件,不存在没有缺陷的软件。每个软件的开发都需要做需求分析,而其中重要的一环就是用户需求。软件好坏,评定标准不全在软件缺陷,更关键的是在用户,用户说了算。一个软件大部分的用户使用之后都说好,那它就是一个好的软件。微信是否存在缺陷呢?也应该吧。要不它为什么更新换代呢?有缺陷,那你就说微信不是一个好的软件吗?能聊天、能语音、能视频、操作简单、功能特定全面、可维护可发展还能微信支付;用过的大部分人都说好吧。事物本身确定不了自身的好坏,所有的事物都有评定点。软件本身存在的缺陷不全可以作为软件自身的评定点,软件好坏的关键评定点在于用户。用户用过了这个软件还用的挺好,这就是一个好的软件。软件自身说了算还是用户说了算?


第二章 个人技术与流程

      此章介绍了单元测试、回归测试、效能分析和个人软件开发流程(psp)。

      2.1节中提到一个问题:怎样才算一个好的单元测试?书中写到:单元测试应该准确、快速地保证程序基本模块的正确性。也给出了一些单元测试好坏的评定标准;包括程序的基本功能、独立性、测试的速度以及测试者。此小节带给我新的认识就是原来还有独立的单元测试这回事;在敲写代码的过程中就要编写好单元测试的代码,这个可以为单元测试和修复软件后期出现的Bug节省很多的时间;程序员对于自己代码或者别人写的代码的熟悉程度是编写单元测试代码的关键,所以程序的作者是写单元测试代码的最佳人选。这些都是在没有看这本书之前没有的概念。

      非常同意2.1节中的一句话:软件的很多错误都来源于程序员对模块功能的误解、疏忽或不了解模块的变化。自己写的代码不仅要自己看得懂,别人也可以看得懂。一个软件的开发涉及到很多的人很多的知识,只有在大家都能懂的情况下工作才能友好的进行。文中也写到做一个测试的运行时间是几秒钟;快,才能保证效率。一个软件中存在几十个基本模块,每个模块又有几个方法。只有快才能保证软件开发的进度。当然,对于一个有足够开发经验的资深程序员来说这不是什么难事,但是对于菜鸟来说呢就非常的难了吧。要质量也要效率、更不能缺失单元测试步骤。那么,对于菜鸟是否有一些提高单元测试的速度的技巧或者是工具呢?比如某个类的测试方法或者存在某个或某些类的测试工具呢?看过这本书之后发觉单元测试在软件的开发过程中真的很重要。


第三章 软件工程师的成长

      此章介绍软件工程师水平的评定方法,软件工程师的的能力表现、价值体现;TSP对个人的要求等。

      书中介绍一个软件工程师的成长所经历的:个人能力的提升与发展和软件工程师的职业发展。个人能力的不断提升不断完善、当你具有了这个水平,你进入到软件开发这个行业成为一个菜鸟级别的软件工程师;而后在职业的道路上,通过团队合作开发项目、通过考级认证、通过自我评估等从入门干到了熟练到带头人甚至到了大师,成为了最高级别的软件工程师。这个时候公司对你说:你的年龄到了,你要被淘汰了。一个有能力的人从菜鸟干到了大师,却因为年龄到了要被淘汰了?想问的是,软件开发或者与软件相关的公司是否真的把软件工程师的年龄看得很重?华为公司,淘汰制度。你要在这个公司继续生存,你就要不断的提升自己的能力适应这个公司的生态并且有作为,这是你生存下去的方法。这是公司对技术人才能力强者爱惜的表现而不是他年龄的界限。

      我们应该百分百的以能力和对软件开发的贡献作为一个软件工程师成长的评定标准,而不是年龄。阿里云安全科学家吴翰清,20岁面试阿里巴巴,面试官让他展示自己的技术能力,直接把阿里巴巴内网搞崩。阿里录取他看的不是年龄就是他的能力。只有在不断的学习、不断的提升自己、紧跟时代的步伐才能不因诸多因素而淘汰。一个能力出众的软件工程师不会因其他因素而被淘汰。


第四章 两人合作

      此章介绍代码的规范、极限编程、结对编程、两人合作的不同阶段以及影响他人的技巧。

      4.1节介绍了代码规范。软件的开发绝大部分是团队共同协作完成的。每个程序员都有自己写代码的一些习惯,写出来的代码或许只有自己看得懂,团队的人看不懂;而协作的目的是写出来的东西大家都能看懂。所以程序员写代码是一定会有自己的习惯的也是允许有的,代码规范就是来限定程序员写代码习惯的也是为了让大家写的代码按照统一的标准来执行的。代码规范了的话,别人能看懂你写的代码你也一样可以看懂别人的代码。这是一个消除代码隔阂的方法也是提高团队效率的好方法。

      4.6节写两人合作的不同阶段和技巧。并以跳舞为例解析两人合作的萌芽阶段、磨合阶段、规范阶段、创造阶段、到最后的解体阶段。套用在一个两人合作的软件开发项目中来。萌芽阶段:初识,交谈、提出想法接纳对方,还未了解,各自的期望促使项目的进行。磨合阶段:不默契、意见分歧,逐步妥协、越来越默契。规范阶段:和谐、默契、制定一些准则共同坚。创造阶段:为完成项目共同努力。解体阶段:项目完成,分道扬镳。两个人的合作,自然会出现不同的意见,每个人都会有自己的想法,讲的不是谁制服谁,也不存在谁完全听谁的。在两个人平等合作的情况下,不存在领导与被领导的关,有的是理解和包容,谁的意见更适用项目的进展就该采用谁的。只有统一愿望,才能使两人合作的项目更好的进展下去。要合作讲合作,其他的方面也是如此。


第五章 团队和流程

      此章介绍典型的软件团队模式和开发流程都有哪些?

      5.2节介绍的软件团队的模式,例举了:一窝蜂、主治医师、明星、社区、业余剧团模式;秘密、特工团队等的软件团队模式。一个团队的存在,每个成员具有不同的技术与能力,在团队中担任不同的角色。不同的团队分工、团队协作会是这个团队长久顺利的运行。一个怎样的团队才能更好的生存下去;处于一个怎样的团队担当怎样的团队角色才能发挥自己在团队的作用,对团队有所贡献。书本介绍了这么多的团队模式哪个才是好的团队模式?怎样才能分辨自己所处的团队模式或者是如何寻找适合自身发展的团队模式呢?是根据自身的能力寻找还是根据好的团队模式来改变自己完善自己?

      5.3节介绍开发流程。软件的开发总要有一些方式方法,其中瀑布模型是最早的软件开发过程。其中大致的软件开发框架是:系统需求-软件需求-分析-程序设计-编码-测试-运行;并且在相邻的两个步骤之间做回溯。除了书本介绍的瀑布模型还有很多的其他软件开发模型。存在的软件团队模式和软件开发流程,对这两个的选择会是一个比较难判别的问题,做到适用团队适用开发适用自身的更是一门要学习的学问。如何选择?成了这章的疑问和要解决的问题。


引用:

如何提高软件单元测试技巧:http://www.doc88.com/p-3724290197137.html

浅论如何做好单元测试提升软件质量:http://www.51testing.com/html/67/n-846267.html

软件工程师如何不被淘汰?https://blog.csdn.net/ptrunner/article/details/81393383