软件工程原理和方法 第一次作业 (姜亦航 201731083311)

---恢复内容开始---

课程链接:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/

作业要求链接:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2706

课程目标:深入了解软件工程专业知识,认真学习本专业领域课程,为未来更好地学习软件设计、写出更优秀的代码打下坚实的基础;同时通过本课程学习如何更好地参与团队合作,提高团队学习、交流、合作能力,为未来学习、工作发展打下基础。

具体实现方面:通过该课程深入了解学习软件工程设计的历史与未来发展方向;将书中所学在与同学的合作中做到实现,并努力增强自己的团队合作交流能力。

 

正文:

一、自我介绍

1、(我的博客地址:https://www.cnblogs.com/Andrewhang/)

2、我的名字是姜亦航,来自四川雅安,是通过大一上学期转专业考试从而来到西南石油大学的软件工程专业。我转专业的原因首先是确实对原专业不感兴趣,不太了解自己未来的发展方向。但通过大一上期时查阅相关资料,发现自己也许适合本校的软件工程专业,对自己的未来也终于有了一个明确的规划。来到这个专业之后,我也在努力追赶之前没有学习过的课程内容,在通过一年的学习之后,越来越喜欢上了软件专业。之前的学习都是学习基础的语言、逻辑等等,这学期开设的这门软件工程原理课程,恰好是对于我来说的一个深入学习本专业专业知识的一个契机。在两周的课程之后,我已经比以前更明确了自己来到这个专业的目标,因为之前都只是写写代码,做做题,但是现在我开始了解到,软件设计开发不仅仅是写写代码这么简单,那只是最基础的东西。我要更多地学习本专业的更多理论,比如如何高效地开发软件,如何更好地设计自己的产品,如何更好地进行团队合作,甚至我还要在未来去学习其他专业的知识,比如经济、社会法律等方面,这样才能在未来工作中,更轻松地了解客户需求,才能使自己开发的软件产品更好。

  所以在未来的学习当中,我不仅要提升自己写代码的能力,还要更多地利用本门课程所学到的知识,去完善自我。

二、阅读与思考

 

(1)回想一下你初入大学时对软件工程专业的畅想

  • 当初你是如何做出选择软件工程专业的决定的?                                                                                                                                                                                                         
    • 首先是对写代码和软件设计的强烈兴趣,喜欢写完代码运行成功后的那种成就感,并希望通过未来几年的学习自己能够成为一名出色的软件工程师,去开发更多的产品,那将会是很棒的事情。其次是软件工程十分适合现在的潮流,新兴科技技术越来越多,众多的科技产品也在不断地融入人们的生活当中。                                           
  • 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
    • 很符合,刚来这个专业学习了一年,就能初步掌握两门语言(C、C#)并利用他们去写一些代码去解决问题,已经很开心了,这也使我对未来的学习充满了期待。           
  • 你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
    • 会是吧,因为如果以后能做一名软件工程师,带领自己的团队工作,帮助年轻的程序员,其实非常好。                                                                                                                                                        
  • 将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因                                                                                                                             。会,既然选择了这门专业,当然要一路走到底。如果有机会,学成出来之后,肯定希望能去北京的中关村工作。不过对于一个刚毕业的大学生,留在成都,在软件园去工作也很好。

(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你

  • 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?
    • 我现在也就只会写比较简单的代码吧,掌握了C、数据结构、C#、数据库、这些知识技能。代码量我也不知道用多少来形容,目前还比较少,就写作业的代码和看网课跟着网上的老师写过一点,不过现在开始我要更加努力了。
  • 离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?

                     离成为一个合格的软件工程专业本科毕业生,我觉得差的还很多吧,首先自己还要多练习已经学习过的C、C#等语言,还要在未来的学习中去学习其他更多的语言吧,比如JAVA啊,最流行的PYTHON这些。

(3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。

  • 对照以上你阅读的前人们的经历,你的选择是什么?
    • 我的选择自然是考研。我觉得吧,首先考研就是人生中高考之后又一个挑战自我的重大机会。去年同是我们软件工程专业的师兄都凭借自己的努力考上了北大研究生,虽然不敢说自己也能追随他的步伐去到北大,但至少我得通过自己的努力去考一个985、211的研究生。我觉得大学本科毕业就去工作有些太早,我应该抓住自己的年轻时光,进入研究生领域去学习更多的专业知识,更多的完善自我,也给自己未来的工作创建一个更高的平台。
  • 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
    • 我在之前的学习中有些不太重视专业课的学习,导致其他课程成绩还不错,就专业课成绩特别差。这是我的劣势,所以我希望这学期泡在图书馆,加紧学习本学期专业课程的同时,把以前落下的补上来。优势的话可能就是自己的高数、英语成绩吧,对于之后考研的话这两门还可以吃吃老本,努力一下还是不错的,之后的重心就要放在专业知识的学习上了。
  • 针对你的选择,你给自己的大三设定的规划安排是什么?

                    大三的规划呢,当然就是做好考研的准备工作了。之前喜欢打篮球,到了大三就要减少这些娱乐项目了,多把时间放在学习上面。

 

三.提有质量的问题(快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。注明是哪一章哪一节。要有观点、有证据或分析。字数不是直接的考核标准,但是要求篇幅长到能把观点表述清楚。)

 1.书中第七章第133页的问答中,阿超用了一个“围观下棋者支招”的故事,来说明责任人应该自己拿捏主意,别人的意见知识参考,不该讨好别人而采用别人的意见。我认为,在软件项目开发过程中,应该注重团队合作,有不同意见可以团队成员一起讨论,从而拿捏最好的方案。阿超的例子中,围观者的确与这盘棋的输赢无关,但是在我们的项目开发中,每一个细节我认为跟大家都是息息相关的,所以我认为这个例子不太恰当。那么在实际软件项目开发中,到底是责任人按照自己的想法做出决定,出了事情全部承担好一点,还是团队一起讨论定下方案,出了问题团员自身也为自己和责任人一起做出的决定负责好些呢?

2.在书中第八章168页开始就一直在强调做项目之前怎么做好估计,并在170页提出了沿边境线环游中国的例子。最后提出说做出决定之前可以先派人去探探路。但是176页第三段中又说在敏捷项目中团队一般不过分强调“估计”的价值,因为他就是一个“猜”字。那么这是否与前文相互矛盾呢?到底在开发项目之前估计的价值大不大?我们是否应该在有限的时间内花如此大量的时间去做计划前的估计呢?

3.书中第五章93页所讲的秘密团队开发,一个公司秘密地同时让两三个团队开发一个项目,说一个团队的成员如果有很大的自由度,又有独特的使命,这对于大家来说是很大的驱动力。但是我认为,一个公司,一个项目让多个团队进行秘密开发,总有速度快的,也有质量好的,那么公司该如何采用他们的作品?就算最终选出一个,剩下的团队等于是被淘汰了,那么这些员工会做何感想?这样是否浪费了人力资源?是否同时寒了员工门的心?

4.第16章中提到“拼图模型”。我认为这个时代IT行业发展迅速,规模也越来越大,对于众多从事该行业的人员,机会也更多了,前景也更加明显。但是想要出类拔萃,似乎看上去显得有些困难。因为想要干出点事情出来,首先要能创新,但是IT行业的创新模式正如“拼图模型”所讲,这都是一代一代聪明人一点一点积累的,我们后来者很难恰好抓住契机完成最后一块拼图。那么作为未来即将进入该行业的我们,到底是老老实实从事自己的项目开发工作,多做力所能及的项目赚更多的钱好,还是多花时间将精力放在软件研究方面去努力创新更好呢?(这样的话也许最终无法成功,而前者有着更大的容错率)

5.在看完第九章之后,我对自己未来的发展方向又有了新的选择。现在感觉做PM似乎也是一个不错的前景,但是做一个好的PM,似乎要承担的东西太多了。既要有扎实的专业知识,又要有强大的管理能力(这是否意味着还得去学习经济学院管理学的知识 -。-)同时还要有强大的内心,强大的心里素质,以及承担风险的责任心。想到这些,感觉想要成为一个优秀的PM好难,如果大学期间定下这样一个目标,到底应该怎么完善自我,成为一个优秀的PM到底都需要具备哪些方面的能力呢?

 

 

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

上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些,列举至少三个或以上的版本管理软件各有什么优缺点? (提示:搜索一下Microsoft TFSGitMercurialGitHubBitbucketTracBugzillaRationalApple XCode

(1)、Git

优点:
适合分布式开发,强调个体。
公共服务器压力和数据量都不会太大。
速度快、灵活。
任意两个开发者之间可以很容易的解决冲突。
离线工作。
缺点:
资料少(起码中文资料很少)。
学习周期相对而言比较长。
不符合常规思维。
代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
 
(2)、GitHub
 
优点:

1、GitHub 只支持 Git 格式的版本库托管,而不像其他开源项目托管平台还对CVS、SVN、Hg 等格式的版本库进行托管。GitHub 的哲学很简单,既然 Git 是最好的版本控制系统之一(对于很多喜欢 Git 和 GitHub 的人没有之一),没有必要为兼顾其他版本控制系统而牺牲 Git 某些独有特性。因此没有支持其他版本控制系统的历史负担,是 GitHub 成功的要素之一。

2、GitHub 对 Git 版本库提供了完整的协议支持,支持 HTTP 智能协议、Git-daemon、SSH 协议。

3、GitHub 提供在线编辑文件的功能,不熟悉 Git 的用户也可以直接通过浏览器修改版本库里的文件。

4、将社交网络引入项目托管平台是 GitHub 的创举。用户可以关注项目、关注其他用户进而了解项目和开发者动态。

5、项目的 Fork 和 Pull Request 构成 GitHub 最独具一格的工作模式。对提交代码的逐行评注及 Pull Request 构成 GitHub 特色的代码审核。

缺点:

上手较难,所以要慢慢磨合。

 

(3)、

优点:

1、Trac做一个SCM配置管理平台,意味着它有良好的扩充性

2、Trac的权限体系是比较完备的设计

3、非常灵活,可以随心所欲的定制,可以和TortoiseSVN集成。

缺点:

1、不支持多项目,

2、需求和缺陷没有分离,

3、用 wiki 来替代 Word 等工具编写文档对于产品策划来说门槛太高了,

4、中文化不完整,美术人员接触起来困难重重,

5、不显示中文名,本地化做得很差,

6、核心功能很少,不安装插件基本上没法用。

 

---恢复内容结束---

posted @ 2019-03-19 12:48  Andrew,  阅读(232)  评论(1编辑  收藏  举报