这个作业属于哪个课程:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2
这个作业要求在哪里:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2706
我在这个课程的目标是:
搞清楚软件工程是什么,其原理是什么,有哪些软件开发的方法,怎样快速高效的开发高质量软件。还有就是学习团队合作开发软件。
这个作业在哪个具体方面帮助我实现目标:本次作业主要是通过让我们做一些阅读来思考自己应该怎样对待这门课程以及对待以后的学习道路,让我对这个课程有个大体的了解,掌握一些好的学习方法。
作业正文:
一.建立博客并介绍自己
1、博客地址:https://www.cnblogs.com/lfq4588/
2、自我介绍:
优秀这个词语可能和我一点关系都没有,这一学期已经是大二的第二个学期了,但是我学到的东西少的可怜,也就是自己浑浑噩噩的过了将近两个学年。由于懒惰我放弃过很多能够接触新知识的机会,幸好自己还不算特别笨,要不然就真的是一文不值了。我的知识面非常的狭窄,无数次告诫自己要努力,但是最后效果都不太好。现在面临着时间的流逝,自己有一些觉悟,开始努力学习知识以此来丰富自己,我正努力的控制自己不要懒惰并且有信心一直坚持下去(其实这也是在找回自己,自从上了大学自己就完全变了变得懒惰,所以我要找回自己,会努力的自己),好在现在还有时间给我重新拾回自己。我是一个不太善于表达自己的想法的人,其实有时候有很多东西道理我都有一定的看法,但是我说不出来。课外对体育竞技(各类体育项目包括电竞)和时事新闻(比如国家大事和国际新闻)比较关注,没事的时候也喜欢出去运动运动。
二.阅读与思考
(1)回想一下你初入大学时对软件工程专业的畅想
- 当初你是如何做出选择软件工程专业的决定的?
- 当时填报志愿的时候因为的眼睛有轻度色弱有很多专业都是受限的,在剩下的专业里边软件工程这一专业貌似是比较适合我自己的专业,所以就决定选择了它。
- 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
- 符合,填报专业的时候我大致了解过这个专业以及大学的学习,而我学习的这些课程也大致与我了解到的相符合。
- 你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
- 它是不是我擅长的领域我不知道,但是从我接触这个专业开始我就一直喜欢这个专业。
- 将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
- 会。我没有特别想去的城市,对我来说在哪儿工作都一样。也没有特别想去的公司,对于我来说到时候能给到我与我自身价值相当的薪水的公司我都可以。我从大一上学期过后就一直想成为一个系统程序员,虽然说这要求很高。
(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你
- 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?
- 目前具备的知识有数据结构、数据库的简单应用、C/C++和C#编程语言、对汇编语言也有所了解,代码量可能有价值的只有七八千行吧,主要是写一些小的C/C++程序。
- 离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?
- 差的东西还挺多,像计算机系统、网络技术、设计模式、软件工程原理与方法、操作系统知识、和一些高级语言比如C/C++和java这种重要语言的熟练应用等等,自己的专业学习能力也还很弱有待提高,自己的算法设计能力以及数学逻辑能力也有需哦不足。
(3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
- 对照以上你阅读的前人们的经历,你的选择是什么?
- 考研
- 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
- 优势就是我已经下定决心,人是逼出来的;劣势就是个人的能力相对差一些。
- 针对你的选择,你给自己的大三设定的规划安排是什么?
- 首先恶补英语,然后就是准备考研。同时要将自己喜欢的C/C++熟悉掌握,还有就是学习有关操作系统的知识。
三.提有质量的问题
- 快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。注明是哪一章哪一节。要有观点、有证据或分析。字数不是直接的考核标准,但是要求篇幅长到能把观点表述清楚。
(如何提出有价值的问题? 请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.html,以及在互联网时代如何提问题。 还有这些要点:- 在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文。
- 列出一些事例或资料,支持你的提问 。
- 说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾?
一个模板可以是这样:
我看了这一段文字(引用文字),有这个问题(提出问题)。我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。
【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。
d. 大学生应该能写出自己的思考, 而不是摘抄书本内容。
e. 提示:编程经验不多的同学,建议看16章 “创新”, 提出自己的问题。)
1、教材第一章开始1.1举例,第三个例子,说一个程序员刚上班的时候觉得以前同事写的代码很垃圾,想推倒重写,然后一个老员工告诉他现在的代码就是去年新员工愤怒推倒重建的结果,这个例子让我想起了我在CSDN博客上读过的一篇文章(链接https://blog.csdn.net/csdnnews/article/details/87899185),我就有个问题:我应该怎样正确看待并对待别人的代码?有时候我觉得写得很差的代码但它却值得我学习。
2、教材第一章1.2.1讲软件的特殊性说到易变性时,有正确地修改软件是一件很困难的事,就只是提了一句正确的修改软件,但是他没有具体说怎样正确的修改软件,所以我就想问一下正确的修改软件是有什么标准的方法,还是就是纯粹靠个人能力?还有这里的正确又是一个什么样的很标准?
3、教材第五章讲了很多种软件团队的模式,有主治医师模式、明星模式、社区模式、业余剧团模式、秘密团队模式、特工团队模式、交响乐有团队模式、爵士乐模式、功能团队模式、官僚模式等等,这些模式各有特点。有个问题就是对于我们这种还处于学习阶段、对自己的能力认识模糊的地人来说,在团队项目中我们该如何分工?弄不好就很有可能成为“一个学生干活,其余学生打酱油”这种情况,我们要避免这种情况发生,要把握一个什么样的度?还有就是怎样能准确的人知道自己的能力然后担任能够做到的职务或者工作量?
4、教材第十四章14.1软件质量,书上有“软件质量=程序质量+软降工程质量”,其中软件工程质量要“好”、“快”、“便宜”,都说便宜没好货、慢工出细活,但这里要求又快、又好、又便宜。那这里的质量得好标准又是什么?教材前面内容有讲到很多提高软件质量的方法,想软件过程模型这些东西是有提到怎样又快又好的开发软件,但是我看到这儿依然对于这个高质量的软件这个高质量的然是很模糊。
5、教材第十六章16.1.8说创新者就是冒险家,我不认同这个说法,在软件工程里边想创新不简单,但也不能把这里的创新等同于冒险啊,一个想创新的人他肯定对当前已有的一些技术已经很来接甚至精通了,他觉得有更好的方法来代替这些东西,如果他创新失败就不代表说他会失去什么啊,有的也只是能更深刻的再理解一下这个东西。这不是冒险,这是走在前面,是先驱。
四.了解和调查源程序版本管理工具
上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些,列举至少三个或以上的版本管理软件各有什么优缺点? (提示:搜索一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rational,Apple XCode)
Microsoft TFS:
优点:
任务版上可以将需求、项目进度都一览无余,对于小团队而言,比甘特图更有用
能够与和VS 无缝接合
缺点:
个人成本上的消耗相对来说要大一些。
TFS通过复杂的看似功能强大配置管理,将联机看做是整个项目周期的常态,这在实际使用中造成极大的不便。
整个系统是用 asp 实现的,用浏览器访问相当慢
Github:
优点:
基于web,允许使用Git的源代码管理功能
开源程序更容易被别人看到
github的公开项目免费的
github 不断在修改增进界面
缺点:
不适合新手
Mercuriall:
优点:
操作快速
简单容易上手
界面好看
缺点:
分支管理不灵活
是基于Python的,所以导致跨平台使用不方便