这个作业属于哪个课程 | https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2713 |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2713 |
我在这个课程的目标是 | 学习更多的关于软件工程的知识 |
这个作业在哪个具体方面帮助我实现目标 | 独立思考,提升创新能力 |
作业正文 .... | 注意代码要按格式上传 |
一、自我介绍
我是一个在读的大二学生,对于博客园,之前都没有接触过,更不知道上面有这么多关于计算机学习的方法,还有各种各样的经验之谈。通过老师,了解了博客园之后,让我对学习计算机有了新的认识,同时,开阔了我的视野。在博客园上,对比着其他人,看着别人的经验之谈,反观自己,就像一张白纸,在计算机方面的了解是少之甚少。现在,博客园也成为了我学习的一个新渠道,每天花一定的时间阅读上面的文章,遇到不懂的地方就百度一下加深理解,如果是一些技术上面的问题,我也会请教一些学长,让自己更加直观地去理解它,我也会在接下来的两年大学生活里面更加完善自己。在平时,自己还是比较喜欢运动,每天都会花上半个小时左右去锻炼身体,因为,任何时候,一个好的身体是好好学习和好好工作的前提。在大学,学习很重要,但是,身体也很重要,要学着去平衡它,而不是取其一。过好剩下的两年大学生活,不虚度就是在成长,在进步。
二、阅读思考。
(一)、初入大学时对软件工程的畅想。
- 当初你是如何做出选择软件工程专业的决定的?
初入大学时,我学习的专业和软件工程没有任何关系,要是说有关系的话,我想应该是,我学的专业和软件工程都有“工程”两个字吧,那时对软件工程也没有很深的了解,刚开始只是单纯的认为它就是编程,写程序之类的。在大一的上学期,我从一个学长那里知道了编程,还有C语言等等。那段时间,我也花了一些时间去了解编程,从而进一步地知道了软件工程,那时候喜欢经常去图书馆,也就找了一些关于软件工程的书来看,刚开始是看得云里雾里的,只知道一味地看,不理解也不当回事,这也是我当时学习的一个缺点,容易走马观花。但是,慢慢的,阅读相关的书多了以后,对软件工程也有了自己的认识,改变了以前的认为它只是编程的想法。
眼看着大一上学期快结束了,那时的我非常的迷茫,对原专业一直都提不起兴趣,从开始接触,感觉就是每天都是在画图,有画不完的图。正好,第一学期结束可以申请转专业,所以我就申请了转入软件工程专业,当时我也不知道是否能成功转专业,心里面完全没有确数,就是抱着 一线的希望,既是不喜欢原来的专业,也是想进一步了解软件工程。可能是运气比较好,我转专业成功了,但是这也意味着,这将是我大学的一个新的起点,往后的学习会面临很多的困难,有的是在预料之中的,而更多的是超乎意料的,不管好与坏,我都得去接受。真正决定我选择软件工程的可能是想做自己真正喜欢的事情,而软件工程让我找到了。
- 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
回顾学习软件工程的一年半时间,接触了一些 本专业的基础课程,《程序设计基础》只能是把我们引进一个门,连门槛都没有达到,《数据结构与算法》就是让我们进一步的去运用数据结构和算法来深入一点的了解程序设计,在我看来,应该能够算是在打基础,让我们离门槛更近一步吧;到 后面的课程,就是在扩宽我们的知识面,仅仅是学习皮毛,说起来算是符合我对软件工程专业的一点期待了,但是离真正的软件工程 还差得很远。因为,通过我大一时候对于这个专业的理解,它不仅仅只是编程,还有更多的其他的方方面面需要我们去理解,并且我们还有很多的方法需要学习,要是把软件工程看成是简单的编程的话,那软件工程专业就没有存在的必要性了,所以,对软件工程的学习现在才算是开始。
- 你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
现在我对软件工程的理解也只是刚刚开始,可能对于软件,我还有很多的不足,更谈不上擅长了,但是我喜欢这个领域,喜欢有自己独立思考的自由,而且很多时候还可以把自己的一些想法付诸实践,当然,可能会失败,但是这个领域就是不断尝试失败,并从失败的教训中不断改进的。所以,在软件工程领域,还有很多的未知数,只要兴趣在上面,再加上自己的努力,会成为擅长的领域的。
- 将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
将来我也会考虑从事与软件工程相关的领域,刚开始是从一些基础的做起,慢慢的转向管理岗位,而且,对于毕业后的一些去路的话,还是向往大城市,因为,大城市的机会和所学的将会是不一样的,所处的环境也会有很大的不同,虽然很匆忙,但快节奏更能带动自己思维的转变和能力的进步。
(二)、对于即将迎接的新生活,有那些期待。
- 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?
时间过得很快,现在大二已经过去了半个月了,在学校的生活虽然会累一些,但是也不乏有很多的乐趣。对即将到来的大三,我们会面临着很多的困难,与此同时,压力也在无形之间增大起来,这时候,都要开始思考自己的去路了,有时候想想,大学刚刚过去一半,我们已经有一半的身子已经在大学之外了,时间不会为我们的犹豫不决而停留。在知识学习上,还是有很大的空缺,还是那句老话“纸上得来终觉浅,绝知此事要躬行。”,要真正的付诸实践,从实践中学习,慢慢积累。
- 离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?
专业知识储备还不够,自己的能力也不能很好的去应对在该专业上遇到的一些问题,还有就是对于工程项目的管理能力还有很多的提升空间,这些看起来只能是表面上得差距,还有其他的,虽然是同样的学,但是学习能力和创新能力还有很大的欠缺。
(三)、大三,人生的十字路口,更多的选择。
- 对照以上你阅读的前人们的经历,你的选择是什么?
我现在更倾向于工作,但是在考研上也会做一些准备,给自己多一个选择,争取更多的机会。倾向于工作是因为就软件工程专业,更多的是实践,虽然考研也能有很多的机会去做,但是目前还没有很倾向于考研的想法。
- 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
选择工作的话,和大多数同学相比,优势的话谈不上,只是可能阅历比少部分同学多点;要是劣势的 话就比较多了,经历的项目没有其他人多,因为学习这个专业实务时间也不长,知识也是短板,对于“”后来者居上”这个词用在我身上是很不确切的,学习的积极性虽然很高,但是补短板还是需要时间的。还有就是学习的基本上都是比较浅的知识,学习的深度和广度也是劣势的一部分。
- 针对你的选择,你给自己的大三设定的规划安排是什么?
大三,短短的一年时间,花在学习上的时间会更多一些,因为在大三结束后,就要考虑找实习单位,对于我来说,会自己去找适合自己的实习单位,不会偏向于按照学校安排。而且,大三面临的问题也很多,要是考研,大三也要开始准备,留给自己的时间也不多了。大三上学期,主要是补短板,同时,提升自己的能力,多经历一些项目,积累经验;大三下学期,就要着手准备考研的事情了,不能再懵懵懂懂地学习,给自己制定好考研的目标和方向,实践虽然重要,但是,学习的时间不能刻意去减少。
三、提有质量的问题
1、第七章:书本136页——“什么叫软件的质量?”
百度百科的答案:软件质量是"反映实体满足明确的和隐含的需求的能力的特性的总和"。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准、以及所有专业开发的软件都应具有的和隐含特征相一致的程度。从管理角度对软件质量进行度量, 可将影响软件质量的主要因素划分为三组,分别反应用户在使用软件产品时的三种观点:正确性、健壮性、效率、完整性、可用性、风险(产品运行);可理解性、可维修性、灵活性、可测试性(产品修改);可移植性、可再用性、互运行性(产品转移)。
自己的想法:是否可以把软件的质量和软件生命周期以及满足用户的需求度联系起来,在这个点上有一定的疑惑。
2、第六章:敏捷流程
问题:第六章 中提到:“敏捷流程是瀑布模型发明以来的另一个巨大的进步”,那敏捷除了具有瀑布模型的特点,还有什么比较特别的地方,让大多数软件开发者都在使用它。
3、第二章:个人技术和流程
问题:在书本第28页中提到“回归测试是建立在单元测试的基础上”,那回归测试具体应该在哪一个阶段开始?
4、第五章:团队和流程
问题:在阅读第五章时,认识到很多经典的“软件过程模型”,比如“瀑布模型”、“统一流程 ”等,但这些流程都存在一个缺点,就是都是用文档驱动,比较偏重文档表达,这在软件开发过程有些繁琐,是否有一些更优化的,在书本中没有 提到的软件工程模型。
5、第八章:需求分析
问题:在书本第159页提到的方法(态度:行为、定性:定量),我还是没有完全理解书上的图8-3所要表达的意思?
6、第九章:项目经理
问题:在书本第186页中提到“PM虽然厉害,但是如果将PM与开发人员和测试人员结合起来,对工作不会更有利,反而会造成一些不必要的麻烦”,那是否可以让PM去领导开发人员或者测试人员中的一个,这样来节省时间,提升效率?
四、了解和调查源程序版本管理工具
优点:
①、任务版上能将需求、项目进度一览无余。
②、对于小团队而言,比甘特图更有用集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM能与 VS 无缝接合。
缺点:
①、搭建、维护tfs比较复杂。
②、硬件要求比较高。
2、Git
参考博客: https://blog.csdn.net/bmicnj/article/details/78413058
优点:
①、适合分布式开发,强调个体。
②、公共服务器压力和数据量都不会太大。
③、速度快、灵活。
④、任意两个开发者之间可以很容易的解决冲突。
⑤、离线工作。
缺点:
①、学习周期相对而言比较长。
②、不符合常规思维。
③、代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
3、GitHub
参考文章:博客 https://www.cnblogs.com/li457803908/p/5285354.html
优点:
①、可以作为一个版本控制系统和协作工具,用它来发布工作
②、支持多人共同完成一个项目,可以在同一界面交流。
③、可以创建自己的项目并备份,不用存在本地或服务器上。
④、能够及时有效地跟踪错误。
缺点:
①、捕捉创意过程和记录创意点子上有所欠缺。
4、Trac
优点:
①、Trac做一个SCM配置管理平台,意味着它有良好的扩充性
②、Trac的权限体系是比较完备的设计
③、非常灵活,可以随心所欲的定制,可以和TortoiseSVN集成。
缺点:
①、不支持多项目,
②、需求和缺陷没有分离,
③、用 wiki 来替代 Word 等工具编写文档对于产品策划来说门槛太高了,
④、中文化不完整,美术人员接触起来困难重重,
⑤、不显示中文名,本地化做得很差,
⑥、核心功能很少,不安装插件基本上没法用。
参考资料:
1、百度百科。
2、博客园文章。