《构建之法》第一课-阅读与理解

作业课程链接 https://edu.cnblogs.com/campus/xnsy/Autumn2019SoftwareEngineerFoundation
作业要求链接 https://edu.cnblogs.com/campus/xnsy/Autumn2019SoftwareEngineeringFoundation/homework/4517
个人课程目标 完善软件工程方面的知识漏洞,提高自己软件开发的能力
实现目标方面 通过《构建之法》,逐渐对软件进行深入了解

一、自我介绍

姓名 李博
博客地址 https://www.cnblogs.com/xlog/
个人介绍 一个地地道道的东北人,性格开朗做事爽快,但有这些许的小冲动,喜欢篮球和美食,更加喜欢网络安全领域,从事逆向方向。

二、阅读与思考
(1)回想一下你初入大学是对你所在专业的畅想
当初你是如何做出选择你所在专业的决定的?
高考结束后,面对专业的选择是一片迷茫的,当时的想法就是毕业之后可以找到一个好工作,就业率高一点,并且对于数学比较擅长,所以就选择了计算机专业。
你认为过去一(两)年中接触到的课程是否符合你对你自己所在专业的期待,为什么?
作为大二的学生,接触计算机也已经一年了,在上半个学期中,很多课程都是学校的基础课程,仅仅学了一门C语言,所以也有一些失望;但在下半个学期开始了数据结构的课程,数据结构作为设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础,对于我对计算机的理解更加深刻。
你觉得你所在的专业是你喜欢的领域么,它是你擅长的领域吗?
计算机科学与技术是一门偏向于硬件的专业,而我更加喜欢网络安全领域,或许是以前对黑客的憧憬,所以更加喜欢网络安全,我也更加在擅长的领域是逆向。
将来你会选择从事和你专业相关的工作吗?是的话给出你哦想去的城市、公司和岗位,否的话给出原因
不会呀,以后会选择从事反游戏外挂或者是病毒分析等安全领域,最想去的城市还是杭州,杭州算是中国内地中IT发展比较好的城市,对于一名合格的程序猿,杭州是一个非常广大的发展平台。
(2)对照前人们走过的路和描述未来发展,现在的你
自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。
感觉自己有能力做一些管理系统、对PE文件的分析,已经写过的代码量差不多是千行,自我感觉自己动手写代码太少了,实践的次数太少了。最复杂的项目就是PE文件分析器。
离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距那些?
对于软件开发思想的缺乏,代码量的严重缺少,记得有一个老师曾经说过:一个优秀的本科毕业生的代码量至少要40万行,而现在的我对于这个目标还是有很远的距离,所以在接下来的三年也给自己定下日常的任务,让自己的写代码能力不断提升。
(3)目前是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
对照一上你阅读的前人们的经历,你的选择是什么?
我会选择工作,IT行业是每时每刻都在学习,即便工作也是一种学习,所以我更加希望在工作中接受更加好的锻炼。
在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
对于每一个学生来说,社会是一个比较陌生的地方,选择工作就是选择提前去面对社会,我需要不断的锻炼来让自己变的更优秀。
针对你的选择,你给自己的大三设定的规划安排是什么?
增加自己的专业能力储备,多学多练,让自己在进入社会工作之前,有着较好的优势选择一个更好的平台来锻炼自己。
你对于实现自己的梦想已经做了或者计划做什么样的准备?
对于梦想,属于我课外之余的新方向,所以我要在完成自己的学业的前提,抓紧其他一切课外的时间进行知识的学习,查缺补漏,多提升自己的技能储备。


三、有质量的问题
问题一:软件工程如何避免后期高昂的维护费用?
具体困惑:在翻阅《构建之法》时,我经常会看到对于软件的后期维护讲解,都在表达后期维护费用过于昂贵。这是为什么呀?
我的理解:上网查了一些资料,也不知道对不对,软件开发团队中开发员实力、团队项目经验会直接影响后续维护迭代,企业自主研发软件往往缺乏经验,后期复杂的改进与维护更是因为不断的更新的需求带来了二次开发的任务。
问题二:软件工程师是应该以软件的工作效率为主还是用户的个人体验为主?
具体困惑:在第十二章中用户体验中,提出大部分软件工程师主要关心的事“使用的效率”,而并不是用户体验,这是为什么呀
我的理解:虽然使用效率是用户体验的一部分,但软件开发主要是用来满足客户需求,所以首当其冲的是应该关心用户的体验,软件开发工程师不能只负责简单的编程,把用户体验方面留给别人进行修改,我认为进行软件开发虽然无法追求极致的完美,但我们可以让我们开发的软件更加完善,带来更加好的用户体验。
问题三:成为一个成功的公司的价值观应该是什么?
具体困惑:在第十六章IT行业的创新中,迷思之七:成功的团队更能创新,但其中提到了成功的团对要满足股东的巨大的期望值以及成功的公司有价值观———追逐利润,这让我十分不解,为什么软件开发的团队更加倾向去利润?
我的理解:像前面几章中,都会提到对于软件开发团队与客户之间的关系,并且软件开发的前两部分分析与设计就是为了满足客户的需求,以至于后来的编程与测试也是为了满足于客户,但现在却将团队的价值观只是追逐利润,我认为软件开发团队应该将满足客户的需求作为首要宗旨,软件开发是为了让人们的生活变得更加方便快捷、更加舒适,所以更应该把客户需求放在首位。
问题四:如何正确定位自己在软件开发中的位置所在?
具体困惑:经过本书的介绍,我们了解到在软件的开发过程中,存在着很多的不同角色在发挥着不同的作用,上到项目经理,下到普通的软件工程师,我们如何确定自己最适合的位置呢?
我的理解:在一个软件开发的过程中,经过分析、设计、编程、测试、维护五个过程,每一个人在过程中发挥着无比重要的作用,但处于大学的我们,每天学习的也是关于编程的方法,锻炼自己的编程能力。但未来的工作岗位都适合着不一样的人,所以应该提起做好一些准备,更加锻炼自己这方面的能力,那应该如何发掘呢。
问题五:软件开发中后续的质量保障与测试有什么明显的区别么?
具体困惑:第十三章和十四章明确的对软件检测和质量保障进行详细的讲解,但在书中309页却明确的说质量保障和软件检测是有很大的区别,又提出了大多数的开发团队不需要一个独立的测试角色。这样就是很矛盾的呀?
我的理解:软件测试是运用一定的流程和工具,验证软件是否能达到功能和特性,测试软件中是否存在BUG;二质量保障是让软件达到实现定义的质量标准进行的活动。虽然这两者之间存在这一些共性作用,但依然还是有这很大的差别,所以更加应该进行分别对待,独立出一个专门的测试角色,这样的团队工作效率会加快很多,并且图案都i写作能力也会有很大的提升。


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

GitHub

网址:https://github.com/
优点:提供在线编辑文件的功能;创建自己的项目,并备份;可以将自己的代码分享给所有人。
缺点:只支持Git格式的版本库托管,不如其他开源项目托管平台可以对CVS、SVN、Hg等格式版本库进行托管。

Trac

网址:https://trac.edgewall.org/
优点:非常灵活,可以按照自己的想法进行定制
缺点:不支持多项目,汉化很差,阅读能力很差

Mercurial

网址:https://www.mercurial-scm.org/
优点:掌握的命令较少,学习门槛低;封装性较好
缺点:功能性没有那么强;分支管理不灵活。

你可能感兴趣的:(《构建之法》第一课-阅读与理解)