第3次作业:阅读《构建之法》1-5章

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


第一章 概论

        第一章里面讲述了很多关于软件工程的介绍,软件包括什么,软件工程是什么,还有每个软件的维护,服务运营,软件的生命周期,其中软件=程序+软件工程,程序=数据结构+算法,软件企业=软件+商业模式。软件工程的目标——创造足够好的软件这里面包括用户满意度、可靠性、软件流程的质量、可维护性。

        每个产业都有自己开展到旺盛的阶段,那当然软件工程也是一样,他包括玩具阶段、业余爱好阶段、探索阶段、成熟的产业阶段,在书上举了飞机从早期到成熟的一个例子,先是纸飞机开始(类比软件:写程序练习数据结构/算法,用新的语言程式一下“hello world”),然后试想人类自己也能不能翱翔天空从而出现了科特.柯西(他用一百多个氦气球和一把一字飞上了天)(类比软件:用JavaScript、ASP.NET、Ruby写写网站),莱特兄弟的试飞飞机从而帮助了人类翱翔天空梦想的萌芽,一战二战的战斗机很多飞机都是用莱特兄弟飞机的雏形做出来的(类比软件:钻研新技术,应用新技术在软件行业创新),到了现在飞机已经是一个常见的交通工具(类比软件:银行软件系统,互联网搜索行业,电子商务系统、Windows操作系统)。说到飞机这种常见的交通工具,书上就有一个例子(乘坐飞机时,你会看到乘务人员不厌其烦地给你介绍飞机有几个出口,........,如果你买了一张特便宜的机票,登记时,乘务员说:“为了节约成本,本次航班没有那些安全设备,没关系的,反正大家也不会用到.......”)如果是这样的话,我肯定果断退票并且举报这里的航空公司,当然现在的航空这么发达,乘务人员肯定不会将这些话,不会犯这些低级错误。但是软件不同,无论是高级错误,低级错误都会有,这些俗称BUG(虫子)这种情况每个程序员都会出现并且无法避免,如果没有虫子就不会有软件维护,生命周期这两个说法了。


第二章 个人技术和流程

        第二章里面介绍了单元测试、回归测试、效能分析工具、个人开发流程的用途及其重要性,作者还用简单鲜明的例子介绍给我们他们的重要性。

        在小飞和阿超的对话里面就看得出来单元测试非常的重要,不然的话以后有bug处理、修复起来要花更多的时间,还有的就是想要用模块但是自己没有打出来,这样也可以用别人的模块,但是如果写模块的那个人没有写注释或者没有按照程序员写代码的哪种方法去写会导致用模块的那个人复制粘贴过去之后会出错误,当然处错误是正常的因为参数等等都是没对应好的。在一个公司里面工作的时候做出来的模块代码不只是你一个人看还有很多个人用你写出来的代码,所以做出来的代码不只是要自己看得懂,还有别人也要看得懂,比如在模块之前注释什么参数对应什么功能还有命名应该根据英文来命名,如果不会英文就要用到中文拼音,当然这个也要注释相应的中文文字,这样做就有利于别人能够理解你的代码及其里面的功能。在P2P数据比较里面 大学生vs工程师 差距比较大的有需求分析、具体编码、测试,需求分析不用看学过软件工程的肯定知道很重要,具体编码阶段大学生用的时间要比工程师用的时间多,这也体现了实践的重要性,但是测试阶段的使用时间工程师要比大学生多的多。这也从上面的解释中获得原因,如果不进行单元测试、回归测试等等,这会浪费后期修复bug的时间。

         在一个项目中为什么不能很认真的做完他然后再测试而是做一点测试一点?


第三章 软件工程师的成长

        第三章里面介绍了工程师成长所需的技能。

        书上介绍了初级软件工程成长所需的东西,要积累软件开发相关的知识,提升技术技能、积累问题领域的知识和经验、对通用的软件设计思想和软件工程思想的理解、提升职业技能(包括:自我管理能力、表达和交流能力、与人合作的能力、按质按量完成任务的执行力)还有实际成果,对于没还有进入工作领域的我来说以上这些肯定是有用的毕竟是长辈根据自己累积的经验写出的书,一个理想的团队必须具备以下的条件:交流、说到做到、接受团队赋予的角色并按角色要求工作、全力投入团队的活动、按照团队流程的要求工作、准备、理性的工作。一个团队里面每个人都有每个人的用处,每一个软件工程师的成长都离不开一个优秀的团队,像玩游戏一样,一个团队每次出击都要有一个完美的配合和完美的计划,如果这次的配合出现了漏洞,被敌人抓住之后可能就会被土崩瓦解,团队也是一样每个人都要完成各自必须完成的东西,一旦有一个人没有完成它自己的事情,那这一次做的东西肯定就是不完美的。当然每个人都有自己的成长之路,一个工程师对这些知识的掌握分为如下四个阶段:入门、熟练、带头人、大师。如果在一个团队里面有一个刚刚入门的人,分配的工作当然比其他工程师来说是比较少的,但是当分配的任务不会的时候要及时提出问题和请求帮助,分配任务的人会当做你全都会。工程师的成长可以通过累积软件开发的经验和实践,把这种实践中遇到的问题在以后运用减少发现问题的时间。从而提升自身的技术水平和能力。

        我听我现任的工程师说现在的全国计算机证书都没用,公司面试是不会问你这种问题的,而是根据你做项目的经验和工龄,这是为什么呢?


 

第四章 两人合作

        第四章里面介绍的是两人合作的事情,但是也要强调编码的规范。

        在看了第四章之后我就想起了之前的期末大作业的情景,编码的规范,令自己头都要炸掉的错误,在选择合作对象的时候也要看对方的性格,如果他的性格是很倔强、很无理取闹那种我肯定不会和他组队的,当然能和我一起讲理、一起讨论、一起分享自己发现的有用的东西那才是理想的那个人,当然这种人肯定有但很少。所以合作的时候尽量吧自己的想法说出来,把自己的观念说出来,比如我和我搭档之前的大作业上面风格完全不一样,代码的规范程度每个人都有各自的不一样,结合起来之后虽然没什么问题,但是测试之后遇到的问题就麻烦了,如果是她的代码有问题我还需要时间把它看懂之后在把问题处理好,本来修改bug是我来进行的但是遇到这个问题之后我们两个讨论了一下,她的代码问题他来解决,我的代码问题我来解决。所以说代码规范问题非常的大,因此,写程序的时候要特别注意代码规范。把这个问题解决之后,后面的问题更多的就是观念问题了。

        对于工作时候的合作,能否能自己选择合作对象?  因为有一个好合作对象做事情能够更加快的完成。


第五章 团队和流程

        第五章里面介绍的是软件团队的模式

        在第五章里面介绍了主治医师模式、明星模式、社区模式、业余剧团模式、秘密团队、特工团队、交响乐团模式、爵士乐模式、功能团队模式、官僚模式,每个模式都有各自的不同点,也有共同点,共同点就是设计、交流频繁,在这么多模式当中不同的团队规模可以运用不同的团队模式,具体与运用哪种模式我是真的搞不懂。

        哪一个软件模式更适合用于小公司环境?

 


总结

        在读完《构建之法》1-5章内容之后,让我受益匪浅,让我了解到了之前不会遇到的问题,整本书通俗易懂,在我不懂的地方还会用比喻来进行下去,比如小飞和阿超。希望在这节课里面能学到很多东西能够对软件工程有更深一步的了解,为以后的工作,软件开发打下基础。


团队模式介绍:https://blog.csdn.net/leslieyz/article/details/79585331

单元测试介绍:https://www.cnblogs.com/frostbelt/archive/2012/08/03/2622302.html

 

posted @ 2018-10-07 15:25  huangzhenjie  阅读(172)  评论(4编辑  收藏  举报