软件工程原理课前准备

<作业要求的链接>https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2706

<课程目标>希望通过本课程更加了解软件工程,清楚软件开发所需的技能和流程,成为一名合格的软件开发师。

在思考作业的问题后,我更加清晰地认识到自己能力上的不足,以及明确自己的未来规划,有利于调整自己的心态和做好充足的知识储备,通读完《构建之法》后,我改变了一些自己以前对软件工程错误的认识,明白一个软件的开发不仅仅是靠编程技术,还需要需求分析、测试、协作等等,这都为以后良好的软件开发打下了基础。

 .建立博客并介绍自己

1.我的博客:https://www.cnblogs.com/joanna1220/

2.个人介绍:大学后才接触编程,所以对编程十分陌生,即使经过一年多的学习,我对编程的认识仍没有提高多少,虽然自己编程技术薄弱,但我觉得自己比较喜欢阶段性自我反思,在反问自己的同时了解到自身的不足再加以改进,是一个喜欢对自己进行规划的人,这也是一个可以使自己变得更加优秀的优势。反思和总结的习惯应该是从高中三年繁重的学习生活中得到的最宝贵的财富,之前富有压力的环境促使自己学会进步,不断吸收新的知识和技能。

.阅读与思考

(1)回想一下你初入大学时对软件工程专业的畅想

  • 当初你是如何做出选择软件工程专业的决定的?

            报考大学志愿时,我根本没有考虑过计算机类的专业,但是在大一上学期,突然接触到计算机编程并产生了一定的兴趣,促使我选择转到软件工程专业。

  • 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?

            大多选择软件工程的同学最初肯定都希望自己通过课程学习后可以做出一个“东西”,或者能解决更多的计算机或软件的问题,但事实上,如果只通过课堂的学习是无法达到自己原有的目标,学校的课程重视基础和引导,甚至有些内容并不是现在市面通用的、应用最广的东西,但不可否认再新潮的语言还是其他工具等都是在原有基础上创新的,所以打好基础十分重要。

  • 你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?

            如果从软件的使用来说,我觉得软件工程是一门很实用的学科,当做出一个成品时的成就感是令人非常愉悦的;虽然自己的编程能力不太出色,但软件工程包含许多方面,我相信总会找到一个自己擅长的领域。

  • 将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因

            希望自己可以留在成都,去到腾讯学习和发展,至于岗位可能会选择Web开发相关。

(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你

  • 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?

          虽然已经学习一年多,但自己仍只会一点点编程,知道一点简单的算法;没有统计过自己的代码量但估计不超过一万。  

  • 离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?

           首先专业知识不够扎实,无法利用所学的知识解决问题,其次实际操作时间太少,导致对程序调试和工具使用不熟悉,此外自己没有团队合作的经验,没有按照完整的流程去尝试开发一个项目。

(3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。

  • 对照以上你阅读的前人们的经历,你的选择是什么?

           每个人的人生规划和目标不尽相同,虽然前辈们通过各种途径都取得了成功,但对于我而言,我暂时选择毕业后工作。

  • 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?

           直接工作跟考研相比,首先是文凭差异,可能对于选择某些公司的职位会受到限制,其次通过考研你可以选择更加优秀的学校和导师,提升自己的专业技能;同样直接工作的好处是可以积累两年的实战经验,毕竟解决实际问题和书本上理论有很大的差距。

  • 针对你的选择,你给自己的大三设定的规划安排是什么?

           如果选择不考研,在大三上学期,我会夯实专业基础,扩展阅读相关书籍,将知识吃透,并且也会注重实际操作与理论知识相结合,积极参加计算机相关竞赛积累经验;下学期,我会大致确定自己的就业方向,为暑期实习和大四招聘做准备。

.提有质量的问题  

    1.在第二章第二节效能分析中,虽然提到两种分析方法:抽样和代码注入,但对于如何代码注入我仍然不太明白书中的例子,在上网查阅代码注入后发现其不仅仅用于效能分析还应用于许多方面,但同时这种方法也存在许大隐患。但是如何在效能分析中正确地使用代码注入呢?

    2.虽然在第六章敏捷流程中,详细地介绍了敏捷开发的原则、过程和经验,但对于如何实际地进行敏捷开发,仍然是一个模糊的概念,Scrum Master 的职责和作用到底具体是什么?如何挑选Scrum Master呢?

     通过上网查阅相关资料,我进一步了解敏捷开发强调简单、适应变化、能持续性发展,快速反馈、高质量工作等,一个团队的Scrum Master不是一个发号施令的领导,而是一个教练,帮助团队中的每个人理解和拥抱Scrum的价值观、原则和实践,抱着为大家服务的心态,主动去承担某种责任,或者是主动去做某件事情,帮助团队解决管理问题,解决纷争,让团队专注于价值交付。

    3.在第十一章中提到需要每日构建以及每日构建的重要性,但什么是每日构建?什么是构建系统?构建到底需要做哪些事情呢?

       据360百科解释,每日构建就是指把一个软件项目的所有的最新的代码从配置库中取出,然后从头进行编译,链接和运行,每日构建另一个重要功能就是验证软件中各模块关系是否正确,也可称为"每日集成"。而构建系统是用来从源代码生成用户可以使用的目标的自动化工具。目标可以包括库、可执行文件、或者生成的脚本等等。

   4.在第十一章中也提到实战中的源代码管理,,其中出现许多陌生的词汇,比如文件的锁定、签入签出文件、修改的原子性等,对于之前课程的要求确实没有源代码管理的概念,所以对于这一模块,自己完全陌生,以及如何实际进行源代码的管理仍不清楚。

   5.对于代码复审和测试,我之前都没有清晰的了解,而在读完全书后,我明白首先测试在代码复审之前,测试按照设计的方法、目的、时机和作用又分为很多不同的模块,根据具体的程序使用不同的测试方法,在软件开发过程中测试占有举足轻重的作用。平时的学习中,自己好像根本没有代码复审过,最多在程序报错后让同伴帮忙找错,但着根本称不上代码复审,代码复审的前提是程序通过编译,并且被测试过,在此过程中,开发者必须回答复审者的全部问题并负责这些问题得到满意的解释,最后双方达到一致。

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

1.Github

优点:可以作为一个版本控制系统和协作工具,用它来发布工作;支持多人共同完成一个项目;代码不需要保存在本地或者服务器;适用代码跟踪

缺点:可能不是捕捉创意过程和记录创意点子的最佳工具;不是最好的设计跟踪工具

2.Microsoft TFS

优点:不仅仅支持源代码管理,还可以实现需求分析,测试等功能

缺点:真正应用所有功能的公司和团队很少,大部分都只是用源代码管理

3.Bugzilla

优点:强大的检索功能,强大的后端数据库支持,丰富多样的配置设定

缺点:安装麻烦,只能管理缺陷

 

(以上各管理工具优缺点参考百度)

 

posted @ 2019-03-20 22:37  唐唐糖  阅读(243)  评论(2编辑  收藏  举报