|
这个作业属于哪个课程 |
|
|
这个作业要求在哪里 |
|
|
我在这个课程的目标是 |
可以熟悉软件工程这门学科,掌握软件工程的思想,顺利结课。 |
|
这个作业在哪个具体方面帮助我实现目标 |
了解软件工程相关知识。 |
|
个人博客 |
|
|
其他参考文献 ... |
百度百科 |
一.我——烟火里的尘埃
在校学生,编程菜鸟一枚。平常也没有什么特别的兴趣爱好,喜欢安静,喜欢有趣的电影,偶尔唱唱歌,自娱自乐,打发时间。至于优点嘛,心思细腻,乐观从容。
二.阅读与思考
(1)回想一下你初入大学时对软件工程专业的畅想
- 当初你是如何做出选择软件工程专业的决定的?
- 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
- 你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
- 将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
与其说是我选择了软件工程,不如说是他选择了我。自己本身对软件工程也不是很了解,说不上喜欢,也谈不上讨厌。在过去两年的学习中,逐渐对这门课程有了一些认识,跟最开始的认识还是有很大出入的,当时选择这个专业只是觉得软件工程这个名字听起来很高级,跟电脑编程有些关系,毕业后无非就是去敲敲代码。通过学习,了解到这个专业其实内涵还挺丰富,需要学习各个方面的知识,不仅仅是编程敲代码的能力。说实话吧,软件工程不是我所擅长的领域,但我还是有信心通过学习实践,把他转换成自己所擅长的。在将来,应该会从事软件开发的相关工作,至于公司岗位目前也没什么具体想法,有可能的话希望可以留在成都或者宁波,比较熟悉。
(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你
- 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?
- 离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?
到目前为止,我可以比较熟练地掌握C#,C,对数据结构有一定的认识。至于代码量,没有具体衡量,但总体不多。离成为一个合格的软件工程专业本科毕业生还是有很大差距,对开发语言不算特别掌握,在编程上缺少自己的想法,不擅长思考应该是我最大的问题。
(3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
- 对照以上你阅读的前人们的经历,你的选择是什么?
- 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
- 针对你的选择,你给自己的大三设定的规划安排是什么?
就自身而言,应该会选择工作。相比其他准备考研的同学来说,可以提早进入工作环境,在实际工作中提升自己,美中不足的是,可能对更高深的理论无法掌握,对软件工程整体的认识不够完善。为了能够找到合适的就业岗位,在大三,我想能够精通一门语言,把一门语言学透彻,有机会的话,希望可以进入公司,体验一下真的编码过程,完成一个项目,丰富自己。
三.提有质量的问题
1.<4.4代码复审p73>,代码复审包括自我复审、同伴复审、团队复审,而软件开发又注重效率成本,团队复审会消耗大量时间,是不是可以只采取同伴复审来达到提高效率,节约时间成本?
2.<4.5结对编程>,结对编程中的人员往往都是能力有差异的,如何避免“抱大腿”现象,此外两人轮换角色时,编程能力的高低势必影响对代码的理解,当由编程水平弱的占主导时,如何避免出错?
3.<8.1需求分析>,在找寻需求时,如何评判这个需求是否值得花费人力,物力,财力去开发一款软件,如果这个需求受众范围很小,但却对他们有很大帮助,还值得开发吗?
4.<12.1.6用户体验和质量>,书中提到“用户体验和质量相矛盾”,软件是开发出来给用户使用的,用户体验不应该也是属于软件质量本身的范畴吗?软件质量不应该存在与用户体验相矛盾。
5.<6.1敏捷流程>,敏捷流程中的冲刺阶段,如若上一阶段没有结束,那下一阶段怎么开始?如果一直卡在当前阶段,又该如何?
四.了解和调查源程序版本管理工具
GitHub:GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。gitHub于2008年4月10日正式上线,除了git代码仓库托管及基本的 Web管理界面以 外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。
优点:1.GitHub可以托管各种git库,并提供一个web界面。
2.为一个项目贡献代码非常简单。
3.用户可以十分轻易地找到海量的开源代码。
4.利用GitHub,可以将项目存档,与其他人分享交流,并让其他开发者帮助,一起完成这个项目。
5.创建自己的项目,并备份,代码不需要保存在本地或者服务器。
缺点:1.学习时间周期长。
2.国内访问速度太慢。
Git:GIT是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
优点: 1.适合分布式开发,强调个体。
2.公共服务器压力和数据量都不会太大。
3.速度快、灵活。
4.任意两个开发者之间可以很容易的解决冲突。
5.离线工作。
缺点: 1.学习周期相对而言比较长。
2.不符合常规思维。
3.代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
Mercurial: Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 授权的开源项目。
优点:1.更轻松的管理。由于采用了分布式的模型,Mercurial中每个用户管理自己的 repository,管理员只需协调同步这些repository。
2.更健壮的系统。分布式系统比集中式的单服务器系统更健壮。
3.对网络的依赖性更低。由于同步可以放在任意时刻进行,Mercurial 甚至可以离线进行管理,只需在有网络连接时同步。
缺点:1.Mercurial 的分支不能刪除。
2.Mercurial 的分支比较笨重迟钝。
3.功能比较低落。