第一次阅读和准备作业
这个作业属于哪个课程 |
<https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/> |
这个作业要求在哪里 |
<https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2713> |
我在这个课程的目标是 |
<了解软件开发中的一系列问题、学有所成> |
这个作业在哪个具体方面帮助我实现目标 |
<现实中软件开发例子,团队协作模式、软件开发流程> |
一.建立博客并介绍自己
我平时喜欢听歌、看书、娱乐。不太喜欢哲学类的东西,个人觉得晦涩难懂。对于自己的人生有自己的规划。
毕业后,要么做一个合格的软件开发者,要么从事其它的职业。
我的博客地址:https://www.cnblogs.com/hxh022/ 欢迎找我玩~
二.阅读与思考
(1)回想一下你初入大学时对软件工程专业的畅想
阅读以上材料,并回答下面几个问题:
- 当初你是如何做出选择软件工程专业的决定的?
- 这个专业前景好,对电脑也挺感兴趣
- 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
- 挺符合的,早就知道它不是一门简单的学科,也知道它很枯燥。关键在于怎么将它变得不枯燥,我现在都没想出答案来。
- 你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
- 应该是的,做出来东西的成就感是我喜欢的,但它目前并不是我擅长的领域
- 将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
- 应该会的,前提是我足够优秀能够成为一民合格的程序员。城市就在川内,现在天府新区正在建设中,缺乏人才。
(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你
- 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?
- 学过的专业课我都掌握,但是按照书上的标准来还是差了太多。
- 离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?
- 自我感觉各方面都差很多很多
(3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
- 对照以上你阅读的前人们的经历,你的选择是什么?
- 工作或者考研,灵活变通,如果专业不景气,就先考研,再出来
- 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
- 工作:优势是工作经验。劣势是缺乏了再进修的机会。
- 考研:优势在于学历以及更全面的知识,劣势可能工作不稳定。
- 针对你的选择,你给自己的大三设定的规划安排是什么?
- 埋头苦干,稳扎专业技能知识
三.提有质量的问题
- 快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。注明是哪一章哪一节。要有观点、有证据或分析。字数不是直接的考核标准,但是要求篇幅长到能把观点表述清楚。
(如何提出有价值的问题? 请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.html,以及在互联网时代如何提问题。 还有这些要点:
【1-有关创新】见书p341-344,作者提出了创新在诸多方面不被认可,他举得例子电报与电话让我十分认同他的观点。于是我在想,对于我们来说,是不是创新没那么重要?是不是可以不用创新了?因为创新很难,自己的创新也不一定是对的,自己的创新还在研发阶段就已经有了类似的产品……
这些问题太多了,所以对于我们学生,是不是可以不考虑创新方面的问题?在学习中是不是可以不用锻炼自己的创新思维呢?
【2-计算机专业与软件工程专业】见书p12-13,书中作者说计算机专业与软件工程专业是不同的两个专业,但是根据实际情况(比如我们学校就业的学长学姐们),发现在国内,计算机专业的学生毕业后依旧是从事软件类似的工作。那是不是意味着中国这方面还没有一个确切的界限,那么在以后发展起来、界限分明的市场中还会需要计算机专业的人才吗?
【3-内测/外测问题】见书p285,原书中,作者说,“在开发软件的过程中,开发团队希望让用户直接接触到最新版本,以便收集反馈”。存在一个问题,万一有其它团队的人混入了参与测试的用户中,窃取或者说借鉴了软件内容,造成机密外泄怎么办呢?会有应对措施吗?
【4-有关单元测试】见书p27,一个好的单元测试需要覆盖全部的代码路径,正如老师上课所讲,遇到循环怎么破?遇到嵌套又怎么破?还有说单元测试应加入到自动测试中,具体是依靠什么工具?再者加入了自动测试又如何管理单元测试呢?
【5-有关结对编程】见书p81-87,书上说结对编程是两人一组,并且两人会相处磨合一段时间,那么默契度会高。我的问题是,两人相处的时候,潜移默化地影响到对方,那么不可避免地在写程序的过程中出现一些两人都没意识到的思维误区。所以,我在想,为什么不是三人结队呢?或者说,现在通常双人结对是因为什么?
四.了解和调查源程序版本管理工具
上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些,列举至少三个或以上的版本管理软件各有什么优缺点? (提示:搜索一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rational,Apple XCode)
Git:它的优点在于小而快。快,是指它直接与计算机交互,所以会比在网页上要快得多,也支持离线工作。小,在于Git是Linux内核,这意味着它必须有效地处理大型存储库从一开始。 还有它的分支运行,这就大大加快了开发效率,多人协作效率。可以跟踪错误,使修改错误变得简单
缺点:代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
Microsoft TFS:它是针对专业团队的开发人员工具的集成服务器套件。但它也有针对学生的版本。它的主要优势是任何团队、任何项目、任何语言、任何工具,而且支持免费使用。它提供一组协作软件开发工具,它与用户现有的 IDE 或编辑器集成,从而使跨功能团队可以在所有大小的软件项目上高效工作。
缺点:TFS 的定位是一个团队工具,贯穿需求,开发,测试,发布各个流程提供自动化工具,并不是源代码管理。另外硬件要求较高。
GitHub:它的特性有:代码评审、项目管理、集成、行动、团队管理、社会编码、文档、托管代码,以及安全性能。它是一个比较全面的工具。协助团队进行软件开发。它的目标是针对企业的。GIT 出来的目标是支持多人同时维护庞大的开源代码(linux),所以它的分支能力特别强大,体验特别好。加上支持离线提交,分布式推送拉取,使得代码层面的协作相当流畅。
缺点:上手很困难……