第一次作业
第一次阅读和准备作业
这个作业属于哪个课程 |
https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2713 |
这个作业要求在哪里 |
https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2713 |
我在这个课程的目标是 |
能够了解并掌握软件工程具体开发流程的相关知识并且能够熟练运用。 |
这个作业在哪个具体方面帮助我实现目标 |
了解软件工程的相关专业信息以及对未来职业的想法 |
一. 建立博客并介绍自己
在大家看来我可能是个很安静的女生,和内向。其实真正了解我的人才会发现我该静的时候能静下来,该动的时候也可以很跳。我喜欢看电视剧,喜欢听IU的歌。以后想到处旅游国内国外,和非非一起,因为小时候就有想环游世界的愿望,能遇见志同道合的朋友很开心也很不容易。还想学摄影,所以有在学习构图,修图等。哈哈还在学韩语因为想看韩剧可以不用看字幕。还喜欢平面设计,设计动漫等想学。
二.阅读与思考
(以下内容参考和转载于 北航助教 陈彦吉的 博客 http://www.cnblogs.com/ChildishChange/p/7363123.html )
同学们在上这门课的时候已经大二下期了,你现在面临的困难与迷茫,前人也一定有过。请看看别人怎么学习的,有些是科班,有些是野路子;有些成功,也有失败。请读完下面所有博客 (读这些博客你不吃亏,你也不上当!它们都是血泪经验或教训铸成的文字!)
主题 |
索引号 |
阅读前提问 |
链接 |
科班出身 |
A |
把每天把要做的事情分成ABCD四类:A-紧迫且重要;B-重要不紧迫;C-紧迫不重要;D-不重要不紧迫。你如何保证你的效率? |
|
|
B |
你是否也觉得自己是科班,但没学懂计算机? |
|
|
C |
把每天胡思乱想的东西记在一个笔记本上,作为思维快照,并常常翻回去自省,看看过去和现在的变化。这样的习惯呢? |
|
|
注 |
以上三篇来自《IT小小鸟的故事》 |
|
|
D |
偏科生自学摸索的道路。实习经验对应届生重要吗? |
|
|
E |
速成的培训班和打基础的大学教育有区别么,你是否对大学的基础学科存在的必要性有疑问? |
|
非科班出身 |
F |
很多同学看不起大学老师按部就班地教课,他们心想,我看视频也能学会的,为何要来听课? |
|
|
G |
半路出家,认真学习,对自己狠心,不断在实践中进步 |
|
|
H |
文科生转编程与他对大学教育的批判 |
|
大佬的博客 |
I |
技术栈和大佬的爆栈之旅 |
|
|
J |
大佬在职场中的摸爬滚打 |
|
|
K |
大佬给出的职业规划建议 |
|
|
L |
热情、能力、选择 |
|
|
M |
大佬的成长史与如何进入微软亚研院,他的知乎 |
|
一流的大学 |
N |
第一流的本科教学课堂该是什么样? |
|
|
O |
美国研究生的一些计算机课程和你上过的专业课有什么不同? |
|
|
P |
你在大学中体验到了哪种师生关系?你希望在这门课中采用哪种师生关系? |
|
|
Q |
世界一流大学怎么教软件工程?这种方式是你喜欢的吗? |
|
补充阅读 |
R |
不要轻易在简历上写我热爱编程,我热爱学习。你对计算机的热情是怎样的? |
|
编程人生 |
S |
文章较长,可以暂时不看 |
|
|
T |
文章较长,可以暂时不看 |
阅读以上材料,并回答下面几个问题:
(1)回想一下你初入大学时对软件工程专业的畅想
- 当初你是如何做出选择软件工程专业的决定的?
我是和父母考虑了所学专业的发展前景来选择的,当初还考虑了通信工程和电气等相关专业,我又不想当医生或者老师,所以最后选择了计算机相关的专业。其实当初对这个专业都还不都了解。
- 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
我觉得这两年中接触到的课还基本满足对这个专业的期待吧,以前只知道软件工程开发游戏等软件,现在知道了用什么开发,这个行业是怎样的一个状况。对程序员有了一点了解。
- 你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
作为女生,软件工程对于我而言确实不是我擅长的领域,可是我觉得还挺有意思的,还蛮有趣的,不过感觉应该挺累的吧如果以后从事这方面的工作。
- 将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因?
如果可以的话,我会选择从事软件开发的相关工作,以后想在成都生活,所以想在成都工作。去一些软件公司,但具体还不知道,但是如果可以我想去新浪吧,因为我喜欢挺玩新浪微博的。
(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你
- 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?自我感觉我已经具备的专业知识有C语言和C#以及数据结构,数据库理论知识都挺了解的,不过实际操作可能还不够熟练,对数据库还有一点生疏。已经写过的代码量还挺少的,大概有几千行吧,具体不知道,不过挺少的,我知道自己在这方面花的时间还不够。
- 离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?
在专业知识上还有很多没有掌握,以及缺少很多实际的操作经验,完全没有相关的实际操作能力。没有完整意义上的做过项目。
(3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
- 对照以上你阅读的前人们的经历,你的选择是什么?
我想毕业直接工作,因为我认为我们工作所需要具备的是一种去学习的能力,而不是为了你读了多少的书,软件工程是一个不断学习的过程,不断的去发现探索新的知识的领域,在读研究生时所学习的知识在工作时自己也能学习,本来就是一直学习的一个过程,在具备自学这个行业知识的能力后就可以了,就与能力去完成项目,在开发中学习,在学习中开发。在这种选择下,我认为我相比其他选择继续读书的同学来说更早进入社会,更早的进入这个行业。但是可能具备的专业知识和经验存在不足。
- 针对你的选择,你给自己的大三设定的规划安排是什么?
针对我的选择,我给自己的大三设定的规划安排是认真学习,掌握相关的专业知识和技能并且能够有开发软件的能力,能够做出几个软件项目,拥有软件开发的经验,想去公司实习了解和熟悉这个行业的流程和领域。
三.提有质量的问题
- 第五章:团队和流程
“这样的团队在每一个项目中,不同的人会被挑选不同的角色。在下一个剧目中,这些人也许会换一个不同的角色类型。” 可是现在大部分的软件公司都是有明确的职位层次,比如有些人是专门写功能代码的,而有些是软件分析师,软件测试师。他们在公司都有明确的划分,又怎样在下一个项目中变换角色呢?就像刚进公司的码农怎么可能才完成一个项目就不断的变换角色呢?
2.第五章:团队和流程
瀑布模型中提到“温斯顿建议:要让顾客正式地,深入地,持续地参与到项目中”
顾客怎么参与到项目中呢?他们只关心所交付的功能是否很好的完成了,并看不懂代码听不懂专业知识。而且在参与过程的顾客并没有在当时就提出新的要求而是之后再提呢?
3.第五章:团队和流程
“瀑布模型的局限性:回溯修改很困难,甚至不可能。但是软件生产的过程需要时时回溯”
既然知道瀑布模型完成过后修改很困难,而且需要时时回溯,为什么不在设计相关的功能或者在写代码完成相关的阶段的时候就留有余地,进行能够回溯的设计呢?
4.第六章:敏捷流程
“尽早并持续地交付有价值的软件以满足顾客需求”
尽早是多久呢?而且在早期软件并没有完成,可能只是满足个别功能的代码,最后进行美化,怎么交付有价值的软件呢
5.第八章:需求分析
“某些产品必须实现某些功能”
如果有些功能用代码无法实现,或者很难实现,不能不要那个功能吗?或者可以改成其他相似的。
四.了解和调查源程序版本管理工具
上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些,列举至少三个或以上的版本管理软件各有什么优缺点? (提示:搜索一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rational,Apple XCode)
- Trac:①
Trac是一个为软件开发项目需要而集成了Wiki和问题跟踪管理系统的应用平台,是一个开源软件应用。Trac以简单的方式建立了一个软件项目管理的Web应用,以帮助开发人员更好地写出高质量的软件;Trac应用力求不影响现有团队的开发过程。
优点:Trac做一个SCM配置管理平台,意味着它有良好的扩充性
Trac的权限体系是比较完备的设计
非常灵活,可以随心所欲的定制,可以和TortoiseSVN集成。
缺点:不支持多项目,需求和缺陷没有分离, 不显示中文名,本地化做得很差,核心功能很少,不安装插件基本上没法用。
2.Github ②
Github是一个代码托管平台和开发者社区,开发者可以在Github上创建自己的开源项目并与其他开发者协作编码。创业公司可以用它来托管软件项目,开源项目可以免费托管,私有项目需付费。GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。
优点: 1.完整的支持Markdown语言,而且支持Emoji表情
2.支持直接复制图片到页面,会自动上传图片(非常好的功能,知乎也支持)
3.比较好的支持Mobile。虽然github没有手机客户端,但是一般开发者,写好的blog都会通过微博进行分享,所以点击过来之后,就可以在手机浏览器里面访问。
4.使用github原生的功能,就可以进行类似评论的功能
5.支持@用户功能
6.支持标签,当然是你repository里面
7.强调个人,符合hacker更看重名誉/成就感的天性
8.功能设计简洁实用上手很快,可用性好,已有很多相当质量的各类项目和优秀开发者在上面。
劣势:
(对个人而言)
1.GitHub 使用 git 分布式版本控制系统,而 git 最初是 Linus Torvalds 为帮助Linux开发而创造的,它针对的是 Linux 平台,git 和 Windows 从来不是最好的朋友,因为它一点也不像 Windows。GitHub 发布了GitHub for Windows,为 Windows 平台开发者提供了一个易于使用的 Git 图形客户端。
2.国内访问速度太慢,经常出现connect time-out
3.不能很好的解决GB2312/GBK,对中文不够友好
4.wiki功能太弱,直接导致文档(对于开源项目很重要)经常被分离到一个独立站点
(对企业而言)
5.免费套餐不支持私有项目,无非解决企业内部的需求,github:fi价格过高
3.Git
git可以说是世界上最先进的版本控制系统,大多语句的执行为linux语句,起初就是为了帮助开发linux开发内核而使用。
优点:
适合分布式开发,强调个体。
公共服务器压力和数据量都不会太大。
速度快、灵活。
任意两个开发者之间可以很容易的解决冲突。
离线工作。
缺点:
资料少(起码中文资料很少)。
学习周期相对而言比较长。
不符合常规思维。
代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
①摘自CSDN博客②摘自博客园③摘自狗尾草的博客
因为我从来没有用过以上的管理软件,对他们一点都不了解,所以无法自己回答这些问题,以上都是网络搜索。