软件工程原理和方法 第一次作业(金城 201731062506)

课程: 软件工程原理和方法

作业要求:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2706

课程目标:通过课程学习管理能力,问题分析能力以及团队合作,沟通能力;系统地了解软件工程的由来发展,形成一种思维模式,用工程的思想采取一定高效的流程解决问题。

这个作业在那些具体方面帮我实现目标:首先通过阅读了解软件工程的由来和发展,写下自己的所思所感,对于软件工程的流程模式有个大体的把握,其次通过团队合作,更好的认识自己,提升自己,在合作中发现并解决问题,通过沟通,协商,互补的合作在实践中把握技巧,领悟方法,锻炼自己。

正文

自我介绍:

时间如白驹过隙,倏然之间,大抵两年的时间已经从我指间溜走,记得刚来校园的时候,可以说是背井离乡,在陌生的环境中难免较为敏感,急功近利之心时刻涌上心头。当初选择软件工程这个专业,既然不了解也无所谓喜好之分,只能说是顺势,顺应时代的浪潮,耳濡目染计算机在生活中的“通天”本领,无处不在,信息化时代的到来,令我这个计算机小白又惊又喜,想到选这个软件工程专业,准吃不了亏。平日里我喜欢阅读,看各种书,心理学,小说,史书都涉猎,小说中最喜欢的书是《The Great gatsby》,不仅崇拜于主人公的人格魅力,都是从他的言谈举止中学一些做人的道理,书中这句话“每逢你想要批评任何人的时候,你就要记住,这个世界上的所有人,并不是个个都有过你拥有的那些优越条件”,对我影响颇为深,从前我总是带着主观的,片面的,情绪和偏见待人处事,先入为主,自我为中心,所以当我第一次读到这句话的时候,醍醐灌顶又有些惊悸,幸好为时不晚,铭记于心。史书我最喜欢看传记类的,最喜好的一段历史是三国,最喜好的人物是曹操,治世之能臣,乱世之奸雄,能屈能伸,能文能武,奸诈却又体恤天下苍生的仁者之心,看得清情势,顺势,借势,造势,令我佩服得五体投地,每每看起都津津有味。大一的时候入门编程的时候,可谓是急于求成,想一蹴而就,但是失败了几次,花了大半个下午却得不到结果,令我好些失望,甚至些许后悔,后悔自己当初没认清,不自己了解专业情况就凭主观感觉填写志愿,那段时间在编程中受挫却在英语学习中得幸,参加了晨读,不知道什么原因,或许是对于编程的失落感,以及好胜的自尊让我在英语学习上格外刻苦,几乎天天早期晨读,之后又在校外报名了口语培训班,这么一学就是一年甚至在暑期还不回家参加夏令营,一年下来美式发音也练成了,结交了很多老外朋友,甚至有了转专业的想法。但是之后发生了一系列的事情让我又做出了截然不同的选择,其中的原因不宜说明,大概花了一年的时间掌握一门技术,现在想来,编程和口语又有何区别的,贵在练习,当初急功近利,心浮气躁被几个BUG劝退,现在想来也只能怪自己心志不坚定,目标不明确,好在我现在还是大二,亡羊补牢,悬崖勒马,静下心来,花下功夫,潜心学习。

1)回想一下你初入大学时对软件工程专业的畅想

  • 当初你是如何做出选择软件工程专业的决定的?
  • 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
  • 你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
  • 将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因

 

回答:当初选择软件工程是因为潜意识中觉得形势所趋,亲身感受到计算机对生活的巨大改变,所以觉得这是一个充满机会和挑战的方向。

           当初其实没有对软件工程专业有过深的了解,也没有期待这么一说,从这两年的接触中直观感受的话,还是一门需要脑力体力,需要钻研思考,理论实践并驾齐驱的一门专业。

            平心而论,我有点耐不住性子或者需要及时的反馈,我不太喜欢软件工程,但不意味着我不想学好软件工程,擅长不擅长都是可以通过下功夫弥补的。

             将来应该会从事软件开发相关的工作,我想回家乡绍兴诸暨建设家乡,公司的话就是那种创新型发展型的有潜力的公司(企业文化浓厚的),岗位的话PM吧。

 

 

 

2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你

  • 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?
  • 离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?

 

回答:具备的语言C和C#,数据结构,计算机系统基础,数据库的操作,写过的代码量说来惭愧大概5000行吧(不过已经意识到问题的严重,准备好恶补了)

         离成为一个合格的软件工程专业本科毕业生,差距在于掌握JAVA和python,然后熟悉各种算法,对于计算机各种模块的了解还不够广,某一板块不够深入,未参与项目的历练,以及线代和离散未能深入掌握。

 

 

 

3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。

  • 对照以上你阅读的前人们的经历,你的选择是什么?
  • 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
  • 针对你的选择,你给自己的大三设定的规划安排是什么?

 

回答:我选择准备考研,选择这条道路是因为我还想在做几年研究,甚至考个博士,静下心来学点东西,男人30岁之前做别人想让你做的事情,这些事情可能是长辈要求,也可能是竞争所需,30岁之前我想让自己静下来褪去浮躁,把知识积淀下来,30岁之后自己摸索着做点事情,优势是能静下心来,在一个大氛围下学习,资源和效率都比较好,劣势是不能提早步入社会,社会经验和社会历练得不到充分锻炼。大三的规划首先是准备好考研的复习,针对理想大学的目标开始有条理得规矩时间,其次不断练习自己的编程能力,恶补计算机的知识,系统性地回顾和学习。

 

 

 

三.提有质量的问题

.快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。

 

 

 1.来自书中第二章的2.1.2书中说好的单元测试的标准之一是单元测试要快,我觉得这是矛盾或者片面的,单元测试不仅要测试代码有无错误更要测试代码好坏,所以测试的时候要考虑充分条件进行测试那样的话就像工程三要素,时间,成本,质量,很难做到快省好,单元测试也是这样,应该折衷选取最优,既能测试充分又不冗杂拖沓。

2.来自书中第四章4.5.2书中说在结对编程中,因为有随时的复审和交流,程序各方面的质量取决于一对程序员中各方面水平较高的那一位。这样程序的错误就会少得多,程序的初始质量会高很多,这样会省下很多以后的修改、测试的时间。但是我觉得如果结对编程两个人的质量不一,就有点像师傅带徒弟,主管和助理的模式,这样如果师傅犯下的错误,徒弟不一定能纠正,能纠正的错误也是一些小问题或者简单问题,再者水平较弱者不一定能跟上水平较高者的思路,从而拖慢节奏,影响速度。我认为理想中的结对编程是两个不相上下,实力相近而且配合默契的人员之间才会产生的“1+1>2”的效果。

3.来自书中第五章的5.2书中说社区模式中的社区由很多志愿者参与,每个人参与自己感兴趣的项目,贡献力量,大部分人不拿报酬。我不理解参与社区不拿报酬那么他们的动机是什么,纯粹为了锻炼或者学习?如果没有报酬,社区志愿者是否会出全力呢,在严峻的市场竞争压力下这种模式为什么还没有被淘汰,甚至有成功的案例?

4.来自书中第15章的15.1.4书中说通常当团队修复了所有的Bug,那么下一个版本发布之后,测试人员和用户会有很多机会使用到一些新的功能和场景,这时候,Bug数目往往会以惊人的速度反弹,故称Bounce。系统要经历几次反弹,像阻尼振荡一样,Bug的数目在反弹了几次之后,最后固定在(或者无限逼近于)0。如果一些隐藏的很深的Bug,测试人员测不出来,那这个0的标准还是一个主观数值相对为0,我觉得这里不太严谨

5.来自书中第16章的16.1.7书中说当一个团队拥有成熟的市场、成熟的技术、稳定的客户时,团队已经知道用户想要什么,也不想引入太多变数,只要保证这些用户继续使用产品,并继续升级就好了。这采取了一种维持性的技术,但是这种技术就像一条平缓的S曲线,当经过一定的周期,市场处于饱和的时候,企业之间会进行恶性竞争,想要杀出红海,必须采取颠覆式创新,进入到下一条S曲线中,所以我觉得维持和颠覆是不矛盾的两种方式,在同一个周期中主要采取维持性技术通过并行发展颠覆,但是这种颠覆失败结果也是在承受范围之内的,但走到S曲线末端,只能被市场被迫进行颠覆那时候,先机已经被占,竞争优势就会丧失

 

 

  

四.了解和调查源程序版本管理工具

上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些,列举至少三个或以上的版本管理软件各有什么优缺点? (提示:搜索一下Microsoft TFSGitMercurialGitHubBitbucketTracBugzillaRationalApple XCode

 

Microsoft TFS:

优点:

任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用

可以与 VS 无缝接合

缺点:

TFS在个人成本上的消耗相对来说更大一些。

TFS通过复杂的看似功能强大配置管理,将联机看做是整个项目周期的常态,这在实际使用中造成极大的不便。

整个系统是用 asp 实现的,用浏览器访问相当慢

Github:

优点:

基于web,允许你使用Git的源代码管理功能

开源的程序更容易被别人看到

github的公开项目免费

github 不断在修改增进界面

 缺点:

不适合新手,新手需要多加练习

SVN:

优点:

 不必担心有什么数据损失

SVN允许一个文件有任意都的可命名属性,功能十分完

SVN会关心所有的文件类型,不需要你来手工操作

缺点:

SVN服务器管理复杂

SVN强迫使用者即时处理冲突,然后才能提交。导致代码不能即时提交。

SVN速度超慢。提交、更新、浏览历史的速度都很慢。

Coding:

产品的改进也非常少,基本已经落后

 

posted on 2019-03-17 13:54  二进制dd  阅读(257)  评论(1编辑  收藏  举报

导航