第一次作业
作业所属课程:
https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2
作业的要求:
https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2706
我在这个课程的目标:学习到软件工程的一些基本原理,了解到软件工程的一些管理实施办法,取得理想的成绩,成为一名合格的初级程序员!
这个作业在哪个具体方面帮助我实现目标:
了解软件工程构建的一些基本原理和方法,认识什么是软件工程。
一.建立博客并介绍自己
1.我的博客
https://www.cnblogs.com/HYS153/
2.自我介绍
我来自四川省广安市的一个小县城岳池,我性格比较内向,不善于人际交流,所以我觉得程序员这个岗位还是比较适合我的。我平时喜欢听听音乐、看看书、看看电影,我是比较宅的,可能是性格的原因决定了吧,我也想去外面走走,接触一下外面的世界外面的人,也在努力地改变自己。我有点愧对于这一年多接近两年的大学生活。老师上课讲的东西并没有深入的去了解,我对编程者方面的能力还是比较欠缺的,自己没有私底下花太多的时间,我希望在接下来的大学时间里能够提高我的编程能力。
二.阅读和思考
(1)回想一下你初入大学时对软件工程专业的畅想
当初你是如何做出选择软件工程专业的决定的?
答:其实我原来学的不是这个专业,我原来学的专业叫做信息与计算科学,是一个数学专业,后来听过就业前景不是很好所以才转到了软件工程这个专业的,据说软件工程就业前景好!
你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
答:不太符合我对软件工程专业的期待,主要是老师上课讲的东西都比较多和杂,学完一门课就不管了,有点走马观花,自己并没有深入的去了解,所以也就导致自己比较菜。
你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
答:我觉得软件工程相比较我原来的专业的话还是比较喜欢的,但我觉得不一定是我擅长的领域,我并不喜欢一成不变的工作,我喜欢有创新和有挑战的工作。
将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
答:对于已经入了这个专业的坑的我来说将来应该会从事软件开发想关的工作的。我毕业后想去深圳,深圳的任何一个IT公司,如果可能的话,能进腾讯、华为是最好的,我最想从事的岗位的话我觉得是软件研发项目经理
(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你
- 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少
- 答:目前学习了C语言、C#、数据结构、数据库等课程,但我对它们的掌握程度极其的少,常常学了就忘了。已经写过的代码也非常的少,除了作业没有另外的编写过。
离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?
答:差距甚远,基础知识掌握得不牢,技能不够熟练,不能把课本的知识熟练地运用在具体编码上。
(3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
对照以上你阅读的前人们的经历,你的选择是什么?
答:可能我会更倾向于考研吧!考一个好点学校的研究生还是挺重要的,软件工程本科生找工作也不是那么容易,学历还是非常重要的,无论是工作还是晋升,研究生是比本科生有很大优势的。
在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
答:我的优势可能就是目标确立得比较明确吧!有充足的时间去了解和准备。劣势就是我可能会花费更多的时间和精力,也会比别人更晚的进入社会参加工作。
针对你的选择,你给自己的大三设定的规划安排是什么?
答:尽量学好专业课程,参加一些项目的开发,提高自己的编程能力,为将来的考研做好准备。
三.提有质量的问题
1.第1章 P15页 1.2.4 软件工程的目标是创造出“足够好”的软件,我觉得“足够好”这个定义虽然很好理解,但其实也太模糊了,BUG少就是好软件吗?如果一个软件的BUG虽然少,但是它的可维护性非常的差,那么这样的软件还能叫好的软件吗?BUG的多少虽然可以衡量一个软件的好坏,但我认为一个好的软件最重要的是要符合用户的需求,还有后期的可维护性,一个BUG再少的软件,如果不符合用户的需求,或者说用户用着不舒服,那么这个软件也是失败的。
2.第4章 P79 我看了这一段文字“在结对编程中,因为有随时的复审和交流,程序各方面的质量取决于一对程序员中各方面水平较高的那一位。这样,程序中的错误就会少得多,程序的初始质量会高很多,这样会剩下很多以后修改、测试的时间”后有一个问题就是结对编程真的会省下时间吗?我觉得结对编程最重要的是两个人的配合,如果让两个并不熟悉的人来结对编程的话我想这个程序可能写不下去了,或者两个人的实力相差悬殊的话,结对编程可能还没有那个实力强的人独自编程来得快。结对编程更在于两个人的默契和配合,还有就是两个人的实力相当或者相差不太明显。
3.第六章 P117 “所谓极限编程,就是把一些认为重要和有效的做法发挥到极致;那就别做详细的设计,做频繁的增量开发、重构和频繁的发布”,极限编程要做频繁的增量开发和频繁的发布,那么如何确立每次增量的大小和发布的周期呢?敏捷开发流程有着诸多的优势,但核心人物是Scrum Master,Scrum Master主导和影响着整个的开发过程,增量和发布周期的确定是一个难题,我认为应该根据用户的需求来划分等级,还有根据用户能够承担的时间成本来确定发布周期,而发布的第一个版本是最难的,要用户能够正常使用还要开发的周期要短。
4.第8章 P158 关于人类学调查方法我不是很了解,作者说“大学生们如果能放下自己所学的许多高端技术,走到真实的世界中去,也许会看到并理解来自普通用户的真实需求”,作者解释为和目标用户“同吃同住同劳动”,虽然人类学调查方法能够让我们跳出自己的圈子,更加深入的了解用户的真是需求,但是我觉得这种方法真正实施起来还是比较困难的,比如说一个大型的公司让你做一个管理软件,你可能得去那个公司去实地考察很长的一段时间,我想知道花费这么大的人力物力财力是否真的值得,客户是否接受这一方法。
5.第十六章 P347 书上说“70%的创新者说,他们最成功的创新,是在他们拿手领域之外发现的”,我刚开始比较疑惑,创新难道不是你对一个领域了解的非常透彻以后加入新的想法和主意实现的吗?后来我才理解到成为了一个领域的专家既是你的优势也是你的劣势,正是因为你对这个领域太了解了,所以你的专业知识限制你的思想,越是对一个专业了解就越是难创新,马云是一名教师却创建的电子商务平台阿里巴巴,所以创新并不是要成为领域的专家才能创新,而是你的思想足够活跃,能把不同领域的知识结合起来。
四.了解和调查源程序版本管理工具
优点:1.功能设计简洁实用上手很快,可用性好。
2.创建自己的项目,并备份,代码不需要保存在本地或者服务器。
3.Bugs可以公开,你可以通过Github评论,提交错误。
4.在GitHub页面,你可以直接开始,而不需要设置主机或者DNS。
缺点:1.国内访问速度太慢,经常出现connect time-out。
2.不能很好的解决GB2312/GBK,对中文不够友好。
3.免费套餐不支持私有项目。
Git:
优点:1.适合分布式开发,强调个体。
2.速度快、灵活。
3.任意两个开发者之间可以很容易的解决冲突。
缺点:1.代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
2.git的版本之间的兼容性不好,可能在上个版本的项目内容放到另一个git版本会出错。
3.学习成本有一点高,Git初学时候感觉简单,但是会越来越感觉内容较多,并且有一定难度。
优点:任务版上能将需求、项目进度一览无余,能有效实现 SCRUM,能与 VS 无缝接合。
缺点:搭建、维护比较复杂,硬件要求也比较高。