课程名称 | https://edu.cnblogs.com/campus/xnsy/Autumn2019SoftwareEngineeringFoundation |
作业要求 | https://edu.cnblogs.com/campus/xnsy/Autumn2019SoftwareEngineeringFoundation/homework/4517 |
课程目标 | 了解源程序管理版本差异,熟悉课文。 |
1.建立博客并介绍自己
(1)个人信息
姓名 | 杨光 |
学号 | 201631061414 |
博客地址 | https://www.cnblogs.com/FangYuan454/ |
(2)自我介绍
我来自16级,因为之前没有选这门课,现在补修。在大学学习阶段,幸而身边有同学乐于给出建议,虽遇迷途,但能知返。平时对语言文字感兴趣,对中文的兴趣主要集中在对联、方言。高中学习英语通过观看大量的美剧积累单词的同时,也渐渐地对英语文化习俗产生兴趣,了解了许多中西方文化上的差异。在高考英语取得了130多的分数后并未放弃英语的学习,所以大学才能较快地通过四六级。最近开始自学德语,并打算在未来几年至少熟悉三门外语。当然也希望通过在学校的学习,加强自己的专业技能。
2.阅读与思考
1)回想一下你初入大学时对你所在专业的畅想
- 当初你是如何做出选择你所在专业的决定的?
经过自己的判断与身边人的建议最后做出的选择。
- 你认为过去一(两)年中接触到的课程是否符合你对你自己所在专业的期待,为什么?
不完全符合期待,以为会有更多的软件或高级编程语言开发的知识,但是没有。
- 你觉得你所在的专业是你喜欢的领域吗,它是你擅长的领域吗?
并不喜欢嵌入式,过去比较排斥也不擅长,现在逐步改变中。
- 将来你会选择从事和你专业相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
会从事计算机相关工作,任何城市都可以,岗位希望是软件开发相关,公司也不太挑,主要还是看个人能力。
(2)对照前人们走过的路和描述未来发展,现在的你
- 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。
目前对PHP后端有一定掌握,主要在学习的过程中练习。现在正在和同学一起做一个集成日程与群邮件,聊天的办公软件,算是最复杂的。
- 离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?
没有太多的开发经验,熟悉的技能少,希望能做全栈工程师。离这一目标还有较大差距。
(3)目前是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
- 对照以上你阅读的前人们的经历,你的选择是什么?
工作
- 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
优势是能早接触社会,劣势是学历就比他们低。
- 针对你的选择,你给自己的大三设定的规划安排是什么?
现在努力学习,多进行项目实践,在大三结束时能找到一份好的实习。
- 你对于实现自己的梦想已经做了或者计划做什么样的准备?
工作不是梦想,梦想可大可小,可多可少。有时你已经准备好了,只是差个机遇。
3.提出有质量的问题
Q1.什么是单元测试?(p20)
软件是由多人合作完成的,不同人员的工作相互有依赖关系。例如,一个人写的模块被其他人写的模块调用。软件的很多错误都来源于程序员对模块功能的误解、疏忽或不了解模块的变化。如何能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证?单元测试就是一个很有效的解决方案。
2.1节讲单元测试,完全没有给出单元测试的概念定义,查资料可知“单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。”
Q2.生鱼片模型有什么意义?(p93)
5.3.3说生鱼片模型是瀑布模型的变体。它无非就是和上一阶段连着,但他的问题是“上一阶段何时结束”,这不是鸡肋吗??
Q3.用户总是提出各种需求,如何选择重要的需求?(p143)
8.3这一节讲述了如何获取用户需求,主要是靠调查问卷,也就是用户反馈,但用户可能反映各种小问题,这些问题在开发人员看来或许无关紧要,但这样的问题积累起来了就变成重要的问题了吗?相反地,真正重要的问题或许只有少数人意识到了,如何筛选成了一个麻烦。
Q4.PM属于领导,但是为何现实中经常有程序员抱怨PM?(p179)
9.4阐述了PM的能力要求和任务,但这是理想中的,现实中PM做不到那么好。
Q5.如何有效测试软件?(p239)
13.2介绍了各种软件测试方法,说明根本没有最好的测试方法,就算花再多精力测试,发布软件之后还是会收到用户反馈的各种问题。或许更好的测试方法是在不涉及安全问题的情况下,低成本高效率地完成,即让用户参与测试。
Q6.什么才叫创新?(p301)
16.1一个人很难实现创新,发明创造需要想象力,但并不是全部,很多人只是异想天开,没有技术去实现。
4.了解和调查源程序版本管理工具
bitbucket:
优点:私人项目方便,支持闭源项目,支持中文。
缺点:不开源,不稳定。
GitHub:
优点:项目存档,方便与人交流。实用,值得花时间管理。
缺点:需要长期付出时间,对新手不利。
Git:
优点:离线工作,管理代码成本低,不需要依赖服务器。速度快, 成熟的架构,开发灵活。
缺点:学习周期比较长,代码保密性差。