课程链接:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/
作业要求链接:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2706
我在这个课程的目标:学习软件开发的方法,明白自己要做什么,怎么做,怎样能做的更好。
这个作业在哪个具体方面帮助我实现目标:对自己进行审视,明确自己的现状和目标,做出合适的计划,引发自己对软件工程的思考
一. 建立博客并介绍自己
博客地址:https://www.cnblogs.com/543123abcxmr/
自我介绍:现在已经是大二下学期了,目前已经学过了C语言,c#,数据结构,数据库原理这些专业基础课程,但掌握的并不怎么样。比较擅长思考探究。
二. 阅读与思考
(1)回想一下你初入大学时对软件工程专业的畅想
- 当初你是如何做出选择软件工程专业的决定的?
在选择这个专业前,对这个专业并不怎么了解,只是通过一些媒体,形成了对编程的一些初步印象,觉得计算机编程能做到很多的事,很酷,之后就选择了软件工程这个专业。
- 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
符合,每门课都有每门课的用途,从基础开始,不断深入了解学习
- 你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
引用Emanuel Derman的一句话:“任何事情,当你仔细探究你就会会理解它的量和质;当你对任何一个领域的神韵足够了解,并开始连接这个领域的表现形式和实现细节的时候,任何领域都会变得引人入胜的。”对于这个领域的学习谈不上是多么喜欢,但是正如上面的这句话,任何领域在一步步仔细探究深入了解后都会变得引人入胜的。
- 将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
会,具体的还没想清楚
(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你
- 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?
学过了一些基础的专业课,专业知识、技能、能力还都很欠缺,没写过多少代码,还需要持续不断地大量学习
- 离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?
专业知识的掌握方面还不全,掌握程度还不够,对软件工程相关工具的了解还很欠缺,没有实践经验
(3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
- 对照以上你阅读的前人们的经历,你的选择是什么?
工作
- 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
比选择考研和出国的同学更早投入到实践中,经验会更丰富些,但是对更深入的知识的掌握会不如这些同学
- 针对你的选择,你给自己的大三设定的规划安排是什么?
学扎实专业课程,多练习,多实践
三.提有质量的问题
1.教材第二章2.3中说到了衡量软件工程师能力的模型PSP,模型统计了一些软件开发过程中的数据,但是并没有对开发结果的衡量,只知道过程不知道结果的分析,这样怎么能衡量出能力,怎么能在分析后做到有效的提高?
2.教材第七章7.2.1 MSF的第一条基本原则要求保留所有的信息并公开,例如所有的工作项及历史;所有源代码的修改记录,但是如果将所有的信息都记录下来,就会堆积下来大量的信息,这样怎样高效的找到所需的信息,重要的信息会不会被淹没?
3.教材第七章7.3.8 说要学习所有的经验,学习经验自然是很重要的,可以避免走很多弯路,但是我觉得学习所有的经验是没有必要的,有些事情亲自实践也许要比学习经验效果更快更好。
4.教材第十一章11.5.2提到每日构建,并说明每日构建很重要,就像是蓝球赛中的运球,传球,但是我仍然不明白到底什么是每日构建,每日构建都做什么,在网上找到的说法是每日构建就是每天都把整个软件项目自动编译一遍,最终生成的产出物必须和交付到用户手中的一样(比如你最终提交给用户的是一个安装程序,那就必须在开发过程中每天编译出一个安装包),但是每日构建是进行再软件开发过程中的,软件项目并没有完全完成,怎样每天都对整个软件项目进行编译?
5.教材第16章16.1.2说到了一些大众不喜欢创新,甚至创新者自己都不喜欢创新。创新是本着理想化需要或为满足社会需求,而改进或创造新的事物、方法、元素、路径、环境,并能获得一定效果的行为。对于大众来说也许不能在第一次就接受创新出来的东西,但随着了解的深入有意义的创新一定会得到大众的喜欢的;对于创新者来说,书中的例子是说创新者是因为有更好的创新超过或覆盖了自己的创新从而产生排斥,这种情况如果存在应该也只是创新者一时情绪化的表现,两者都是研究的同一领域,前一个创新者在明白后来的创新后应该会更加赞叹吧。
四.了解和调查源程序版本管理工具
上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些,列举至少三个或以上的版本管理软件各有什么优缺点? (提示:搜索一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rational,Apple XCode)
优点:
任务版上能将需求、项目进度一览无余,对于小团队而言,比甘特图更有用
集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM
能与 VS 无缝接合
可视化发布流程编辑器
支持移动设备
缺点:
有些操作很复杂
2.GitHub
优点:
应用广泛
每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。
从另外一个项目进行分支简单易行
用户可以十分轻易地找到海量的开源代码
缺点:
学习周期相对较长
优点:
采用 Python 语言实现,易于学习和使用,扩展性强
更轻松的管理
更健壮的系统
对网络的依赖性更低
缺点
Mercurial 在不同平台上(尤其 Windows 与 Linux 之间)有档名编码的问题
功能简陋