代码改变世界

第一次作业

2019-03-18 23:08  刘世翔  阅读(268)  评论(2编辑  收藏  举报
这个作业属于:软件工程原理及方法
作业要求:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2713
一.建立博客并介绍自己
一个软件一班的学生,刘世翔,比较喜欢安静,闪光点就是乐观,心态比较好,遇事都不太急,但同时也是慢性子的缺点
博客地址:https://www.cnblogs.com/liushixiang/

二.阅读与思考

(以下内容参考和转载于 北航助教 陈彦吉的 博客 http://www.cnblogs.com/ChildishChange/p/7363123.html )

    同学们在上这门课的时候已经大二下期了,你现在面临的困难与迷茫,前人也一定有过。请看看别人怎么学习的,有些是科班,有些是野路子;有些成功,也有失败。请读完下面所有博客 (读这些博客你不吃亏,你也不上当!它们都是血泪经验或教训铸成的文字!)

主题

索引号

阅读前提问

链接

科班出身

A

把每天把要做的事情分成ABCD四类:A-紧迫且重要;B-重要不紧迫;C-紧迫不重要;D-不重要不紧迫。你如何保证你的效率?

辜新星:时刻调整方向 找到人生的蓝海

 

B

你是否也觉得自己是科班,但没学懂计算机?

刘帅:在失望中寻找希望

 

C

把每天胡思乱想的东西记在一个笔记本上,作为思维快照,并常常翻回去自省,看看过去和现在的变化。这样的习惯呢?

徐宥:掉进读书的兔子洞

 

以上三篇来自《IT小小鸟的故事》

我是一只IT小小鸟

 

D

偏科生自学摸索的道路。实习经验对应届生重要吗?

一直在路上——记我从初中到本科近十年的学习成长历程

 

E

速成的培训班和打基础的大学教育有区别么,你是否对大学的基础学科存在的必要性有疑问?

达内,青鸟!你们使多少花朵误入歧途!

非科班出身

F

很多同学看不起大学老师按部就班地教课,他们心想,我看视频也能学会的,为何要来听课?

.net程序员工作两年总结

 

G

半路出家,认真学习,对自己狠心,不断在实践中进步

我前妻的故事:一个北大青鸟出来的,如何从月薪800元到年薪40万?

 

H

文科生转编程与他对大学教育的批判

【野生程序员】:优先招聘

大佬的博客

I

技术栈和大佬的爆栈之旅

我的软件开发生涯 (10年开发经验总结和爆栈人生)

 

J

大佬在职场中的摸爬滚打

技术人生的职场众生相 - 十多年的经验与心得

 

K

大佬给出的职业规划建议

谈谈职业规划——CSDN对我的采访

 

L

热情、能力、选择

对程序员职业的一些建议

 

M

大佬的成长史与如何进入微软亚研院,他的知乎

进入2012 -- 回顾我走过的编程之路

一流的大学

N

第一流的本科教学课堂该是什么样?

美国视界(1):第一流的本科教学课堂该是什么样?

 

O

美国研究生的一些计算机课程和你上过的专业课有什么不同?

分享下在美国读研期间的一些计算机课程作业

 

P

你在大学中体验到了哪种师生关系?你希望在这门课中采用哪种师生关系?

现代软件工程讲义 0 教学方法

 

Q

世界一流大学怎么教软件工程?这种方式是你喜欢的吗?

软件工程资料 - 优秀的大学怎么教程序开发和软件工程课

补充阅读

R

不要轻易在简历上写我热爱编程,我热爱学习。你对计算机的热情是怎样的?

不要轻易在简历上写我热爱编程,我热爱学习

编程人生

S

文章较长,可以暂时不看

一个程序猿的生命周期

 

T

文章较长,可以暂时不看

老刘连载:编程十年

阅读以上材料,并回答下面几个问题:

(1)回想一下你初入大学时对软件工程专业的畅想
当初你是如何做出选择软件工程专业的决定的?
想编写游戏,比对着分数选的
你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
还算比较符合,能用代码实现基本的小游戏
你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
算是喜欢的领域,但并不擅长
将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
理论上会选择,城市北京会更想去一些,公司和岗位还没考虑
(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你
自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?
能编写一些简单的代码,文件加密,小游戏,以及一些简单的系统,代码量没计算过,但确实不多
离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?
一些指针不算很熟练,以及怎样减少所占用内存等等
(3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
对照以上你阅读的前人们的经历,你的选择是什么?
考研
在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
可以学习更多知识,但是会晚一步步入社会接触各种各样的人
针对你的选择,你给自己的大三设定的规划安排是什么?
准备考研

三.提有质量的问题

  1. 快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。注明是哪一章哪一节。要有观点、有证据或分析。字数不是直接的考核标准,但是要求篇幅长到能把观点表述清楚。
    (如何提出有价值的问题? 请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.html,以及在互联网时代如何提问题。 还有这些要点:
    1. 在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文。
    2. 列出一些事例或资料,支持你的提问 。
    3. 说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾?
      一个模板可以是这样:

我看了这一段文字(引用文字),有这个问题(提出问题)。我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。
【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。

d. 大学生应该能写出自己的思考, 而不是摘抄书本内容。

e. 提示:编程经验不多的同学,建议看16章 “创新”, 提出自己的问题。)

 1、第四章第五节的结对编程:

    书中描述是有两个程序员肩并肩面对同一台电脑一起编程,类似于驾驶与副驾驶,但是驾驶车辆还是飞机都是有个定式,而每个人的编程方式和思维都是不同的,而这样两个人一同编程会不会限制程序员的思维相比于一人负责一部分会不会降低程序员的效率?

2、第六章第一节敏捷流程:

     敏捷开发的原则:

             1.尽早并持续地交付有价值的软件以满足顾客需求。

             2.敏捷流程欢迎需求的变化,并利用这种变化来提高用户的竞争优势。

          3.经常发布可用的软件,发布间隔可以从几周到几个月,能短则短。

          4.业务人员和开发人员在项目开发过程中应该每天共同工作。

          5.以有进取心的人为项目核心,充分支持信任他们。

          6.无论团队内外,面对面的交流始终是最有效的沟通方式。

          7.可用的软件是衡量项目进展的主要指标。

          8.敏捷流程应能保持可持续的发展。领导、团队和用户应该能按照目前的步调持续合作下去。

          9.只有不断关注技术和设计,才能越来越敏捷。

          10.保持简明——尽可能简化工作量的技艺——极为重要。

          11.只有能自我管理的团队才能创造优秀的架构、需求和设计。

          12.时时总结如何提高团队效率,并付诸行动。--《构建之法》

哪种情况下使用敏捷流程?怎样在敏捷流程中保证可持续发展?

3、第八章第六节计划和估计:

在提高估计能力的招数中描述:软件工程师在长期实践中摸索出的公式

这个公式在如今高速变化的社会是否一直适用,会否导致高估自己能力,低估未来困难?

4、第十二章第一节用户体验要素:

在第三小节中提到软件服务要始终记住用户选择,而全章都围绕于用户两个字,而用户也是最琢磨不定的因素,如今高速变化的社会中用户的需求变化十分之快,而一味的跟随

用户的改变而优化会否会消耗大量成本?怎样能减少这样的优化?

5、.第十四章质量保证:

在本章提到“软件开发过程有三个主要特性:‘快’、‘好’、‘便宜’”。但是软件开发过程中怎样快速又保证软件质量?

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

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

1、GitHub:

好的地方:

  • GitHub是一个非常万能的工具。对于任何大小的项目,他都是理想的工具;他也是伟大的web工作流工具。首先,他可以作为一个版本控制系统和协作工具,用它来发布工作

  • 利用GitHub,你可以将项目存档,与其他人分享交流,并让其他开发者帮助你一起完成这个项目。优点在于,他支持多人共同完成一个项目,因此你们可以在同一页面对话交流。

  • 创建自己的项目,并备份,代码不需要保存在本地或者服务器,GitHub做得非常理想。

  • 学习Git也有很多好处。他被视为一个预先维护过程,你可以按自己的需要恢复、提交出现问题,或者您需要恢复任何形式的代码,可以避免很多麻烦。Git最好的特性之一是能够跟踪错误,这让使用Github变得更加简单。Bugs可以公开,你可以通过Github评论,提交错误。

  • 在GitHub页面,你可以直接开始,而不需要设置主机或者DNS。

欠缺的地方:如果,你是Github使用新手,首先的挑战就是摆正心态——需要不断实践和时间。

                     他可能不是捕捉创意过程和记录创意点子的最佳工具。对于这种特殊功能模拟可以选择LayerVault 或其他相似工具。之前,我们已经强调过Github非常适用代码跟踪,但是却不是最好的设计跟踪工具。将图片内容转化为代码,或者将设计用于产品设置,看起来依旧不是那样顺利。

                    这是由设计者决定的,然而,一些人发现 GUI 有点混乱,选择CLI代替。一些开发人员学习主要使用Git命令,这样可以解释为什么他们不太喜欢GUI的原因了。稍加练习,命令的学习是不太困难的。然而,你喜欢天天写命令吗?特别是跟踪项目历史或解决冲突的时候。所以就有了另外一群喜欢GUI的人们。将提交、修改、移动文件等操作可视化,会有一个更好的体验。而这些,就如之前提到的,需要时间来适应。

                     如果,你专门在GIthub上工作,版本控制存储库就值得你拥有,也需要你长期付出。

2、TFS:

 

 优点:

    任务版上能将需求、项目进度一览无余

 

    集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM

 

    能与 VS 无缝接合

缺点:

    TFS 定位并不是源代码管理,而是一个团队工具,贯穿需求,开发,测试,发布各个流程提供自动化工具。

3、Apple XCode的优缺点:

 

优点:

    编译速度极快,每次操作都很快速和轻松。自动提供撤消、重做和保存功能,无需编写任何编码。

 

缺点:

    更新版本后,某个插件可能会失效。