作业3

收获与感悟。
之前还没接触软件工程时,一直都很想学这门课程,因为我们的方向就是商业软件工程,一开始拿到书时,随便翻了一下,感觉有点抽象,很茫然。这次认真的阅读了前五章,发现这本书用了很多生活中的小例子,来讲解一些抽象的概念,例如两人合作的阶段,什么是团队,团队模式等等,这样子相对于我们学生来说,比较通熟易懂。感觉书上讲得比较言简意赅,详细,调理清晰。读完前五章,了解了一些专业术语(bug,API等),我觉得单看书上的,是不能清除的明白,应该要结合百度搜索,适当扩展相关内容。


第一章:概论
从1.1节知道了两个推论:软件=程序(算法代码,数据结构)+软件工程,软件企业=软件+商业模式。程序是软件的基本功,软件工程据定了软件的质量;软件是软件企业的前提,商业模式决定了软件企业的成败。对也软件工程有点不了解,于是上网百度了一下软件工程的定义,发现对于软件工程这个概念目前还没有统一的定义。理解为软件工程就是用工程学方法,管理软件生产的各个方面。之前一直听师兄师姐说:bug,bug,都不知道是什么,以为是个包之类的东西,在读1.2.5节,发现bug就是软件运行时出现的错误(缺陷),等把1.2.5节读完才发现,bug也不能单说是错误(缺陷),而是该软件的行为和用户的期望不一样时,才叫bug。
提出的问题:(1.2.3节:软件工程与计算机科学的关系)为什么一个计算机系要分成三个方向?商业软件工程,网络工程,数字媒体,因为我发现商软和网工学的都很像,只是学习科目的顺序不同罢了。


第二章:个人技术和流程
在2.1节的时候看不懂单元测试的代码,不过从字面上理解单元测试就是一个用来调试测试错误的代码的一个函数,也明白了在程序员编程代码时,应对所编的代码清晰详细的记录下来,方便单元测试和别人看懂和修改。在这一节出现很多次API,于是上网搜索了,API:应用程序编程接口,API函数:是WINDOWS提供给应用程序与操作系统的接口,在我们所学的(C++/C#/Java)等编程工具中提供的类库和控件都是构架在WIN32 API函数基础之上的,是封装了的API函数的集合。在我看来,API是个很多功能的函数。2.2节讲效能分析,主要是为让自己的程序在时间复杂度和空间复杂度上比别人快一个数量级,说明效能分析的重要性。2.3节讲个人开发流程(PSP),了解了从学生到职业程序员这一个过程的变化--在需求分析花更多的时间,花在代码上的时间反而少许多,也了解PSP的一些特点。
提出的问题:(2.3节PSP)像我们这样有两年不到的编程经验,我们是应该花更多时间在需求分析上,还是在代码编程?


第三章:软件工程师的成长
3.1节讲个人能力的衡量与发展,先讲个人的工作质量会直接影响团队最终软件的质量,接着说出初级软件工程师的成长的5个方面体现,然后对于软件开发的工作量和质量的衡量,最后提出在团队工作中,稳定、一致的交付时间是衡量一个员工能力的重要方面。在3.2节软件工程师的发展这一节中,知道了如果以后要从事IT工作的,我们要有一定的等级证书(认证项目),要养成自我评估的习惯。不要急于求成,什么书都泛读,要根据自己的情况在哪个方面追求主要的,哪些是次要的。3.3节讲基恩能够的反面,因为我们总是说自己精通哪一方面的技能,那怎么才算是精通呢,我们可以通过技能的反面--“解决问题”,来方面思考自己是不是真的精通。
提出的问题:(3.2.1节软件工程师的职业发展)在毕业之前,我们最好考关于计算机方面的哪个证书?


第四章:两人合作
第四章的1,2,3,4节讲代码规范和复审,主要就是为了代码的简明和正确性,对于复审,如果是自我复审的话,我觉得很难看出什么问题,因为自己编程过了,就没什么耐心再去看多一遍代码。4.5节讲的是结对编程以及如何结对编程,不可否认,相比个人编程,结对编程会带来较多的好处。4.6节讲两人合作的不同阶段和技巧,在这里我有点不太认同“做汉堡”的方式,因为最内层的语言太过与偏激,我觉得“三明治”的办法比较易于让同伴接受
提出的问题:(4.5节~4.6节)结对编程时,总会和小伙伴产生不同的见解,也不知道该听谁得好,怎么解决这个问题?


第五章:团队和流程
5.1.节讲团队与非团队的区别。5.2节讲软件团队的模式,如明星模式,社区模式,交响乐团模式等等。前面几个看得明白,当看完时,觉得都有点乱了,还是不太够清楚的区别开来。在我看来,对于我们现阶段的学生来说,我觉得主治医师模式并不适合我们团队合作,因为这样很容易出现打酱油的小伙伴。对于第三节,印象对深的就是瀑布模型,它适用于技术成熟的团队和稳定的产品定义,我觉得该模型存在一些缺点,需要时间长,才能得到初始版本,再改变需求时,将会带来巨大的损失,文档资料数量大等问题。虽然为了解决瀑布模型存在的问题,大家在实践中提出了各种变型,但又会带来新的问题了。
提出的问题:(5.2节:软件团队的模式)书上所讲的几种模式有适合我们现阶段的学生吗?如果有,是哪一种?


额外的问题:哪一种计算机语言用得更广泛?像vb,C#,C++,java这些,我觉得比较有用的是java语言,对吗?

原文地址:https://www.cnblogs.com/ZeJuan/p/4429159.html