《构建之法》——第一次做业

这个做业 系统分析与设计
做业要求 在这里
我在本课程的目标 了解真正的软件工程,认识软件开发的流程,学会团队合做开发、测试的模式,知晓构建一个完整的软件流程
课程在哪里帮助我 通读教材,明白完成一个完整的软件不只仅靠的是技术,还须要前期的需求分析,设计,以及长期测试,维护等等

1、简单介绍一下吧

      初次见面,先报个名号:我叫魏家田!哈哈哈!自我剖析一下,别人都叫我老干部。html

      不知不觉就到了别人口中的大三老学长,瞬间感受本身又老了。。。回首过去,稍有惭愧,做为一名软件工程专业学生,在即将面对人生又一个岔路口的我在技术方面仍然拿不出手,总结缘由,三个字,练得少;展望将来,前端

2、阅读与思考

1. 回想一下你初入大学时对软件工程专业的设想

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

        其实在报志愿的时候也没想那么多,最初只是选定了两个大类,一个是材料类,一个是计算机类,刚好在西南石大的专业志愿里面软件工程排在了第一志愿,因此就来到了这个专业。git

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

        在总体上仍是比较符合个人期待,可是随着学习的深刻,愈发以为仅仅局限于老师上课所讲的知识是远远不够的,书本上的内容只能算是一个小Demo,可能书本上更侧重于定义的理解,可是把书本上的知识转化为实战经验还须要多多练习。好比,在暑期集训期间的JAVA实训,就是经过一个完整项目把死的知识利用了起来,才能有一个更深入的理解。
  • 你以为软件工程是你喜欢的领域吗,它是你擅长的领域吗?spring

        嗯。。虽说目前来看还不足以胜任软件开发的工做,可是,对于软件工程领域来讲我仍是抱有很大兴趣的,尤为是看到一步步设计出来的功能正常实现的时候,那种愉悦知足的心情令我很是享受。
  • 未来你会选择从事软件开发相关的工做吗?是的话给出你想去的城市、公司和岗位,否的话给出缘由后端

        之后必然是要从事软件开发相关工做的。之后应该就是留在成都吧,这是一座来了就不想走的城市。公司的话可能会选择一个石油相关的企业作开发相关工做缓存

2. 对照前人们走过的路和描述将来发展,如今的你

  • 自我感受你已经具有的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你作的最复杂的项目/做业。安全

        从进入这个领域也有两年时间了,可是说到专业知识也只有C/C#语言,数据结构了,并且数据结构也渐渐淡忘了内容。谈专业能力应该为时尚早,技能的话,应该可以实现一些前端开发,和部分后端代码内容。代码量的话,提及来真正能够算得上真正项目代码量也没有太多,可能也仅仅千行。最复杂的项目,emmmmm,就是今年暑假期间技能实习作的一个基于Dubbox的分布式电商系统的开发吧。服务器

        这个项目搭建了商城端,以及两个角色的管理系统。在商城界面设计了购买商品、购物车、搜索、支付、订单等相关功能,采用了spring-boot框架+Redis缓存+Solr搜索引擎集群分布技术,加入了CAS单点登陆设计、Spring-Security安全框架和Freemarker网页静态化技术。
  • 离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?

        做为一名本科生,要经历大学四年的系统化培养,在和一些培训机构的“速成Coder”竞争的时候,咱们的优点是对于整个专业的系统化视野,以及有着良好教育基础的学习能力,可是咱们欠缺的是大量的实战代码量积累,因此在编码能力上,咱们还须要增强!

3. 目前是一我的生选择的十字路口,考研、工做、考公、出国,不一样的选择在大三就有不一样的努力方向。而不管考研仍是工做的每条路径,也有许多不一样的分支。

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

        经过品读前人经验分享,以及两年来总结思考,发如今当今社会大环境下,做为一名普通高校的本科毕业生,要想进入理想单位,拿到理想的薪水,确实有必定难度,因此,要想在本专业领域内有必定的建树,仍是有必要继续攻读研究生,只有在这个领域不断深刻,不断学习,才能在竞争日趋激烈的社会中占据一席之地!
  • 在这种选择下,你认为你相比其余同窗来讲有何优点,有何劣势?

        优点:这两年在实验室和老师也作了一些工做,积累了必定的成果,相比于其余人要在竞赛经验上有着更深的熟悉。

        劣势:代码量太少了!英语也是弱项!
  • 针对你的选择,你给本身的大三设定的规划安排是什么?

        多动手,主动加入老师项目组,承担编码任务,积累更多的实战经验。深刻了解java语言,除了作一个代码搬运工,还应该去了解和思考一下java技术体系中这些技术是如何实现的,认清这些技术的运做本质,是本身思考程序这样写好很差的基础和前提,当咱们在使用一门技术时,若是再也不依赖书本和他人救能获得这个问题的答案,那才算是升华到了不惑的境界。
  • 你对于实现本身的梦想已经作了或者计划作什么样的准备?

        参加高质量赛事;加入实验室老师开发项目组,而且已经承担起部分编码任务

    3、提有质量的问题

    问题一

  • 在第二章的《我的技术流程》P25页中,提到“单元测试必需要由最熟悉代码的人(程序的做者)来写”

    我的见解:我想说,对于这句话,在一些简单的项目中,单元测试能够由做者本人来写测试,可是对于一个大的团队来讲,应该会有相关的测试团队吧(虽然没有深刻了解过大规模软件开发团队模式嘿嘿嘿)可是不是有时候每每会由于这代码是本身写的,本身的想法就已经局限在这里面了,就没有意识到某些问题呢?这时候是否是就须要有其余人来提供他们的帮助或者是关于这个代码的测试意见呢?

    问题二

  • 在第四章的《两人合做》P70页中,提到了断言,可是断言就是断点吗??仍是一个输出验证语句??

    我的见解:编写代码时,咱们老是会作出一些假设,断言可能就是用于在代码中捕捉这些假设 能够将断言看做是异常处理的一种高级形式 断言表示为一些布尔表达式,编码人员相信在程序中的某个特定点该表达式值为真 能够在任什么时候候启用和禁用断言验证,所以能够在测试时启用断言而在部署时禁用断言。一样,程序投入运行后,最终用户在遇到问题时能够从新起用断言。

    问题三

  • 在第六章的《敏捷流程》P111页中,提到“若是团队成员都对某个任务不感兴趣……团队成员小飞想认领任务A,可是A的实现要依赖于任务B,可是B没有人认领,小飞也不具有足够的知识去完成B,怎么办”

    我的见解:我想说,在整个团队开发过程当中不是应该先分析整个流程中所须要的技术支持以及知识吗,因此这种状况应该是不多见的,若是像书上所说,那岂不是有可能在工做进行到一半的时候发现有一个任务没有人能完成,那整个工做岂不是白费,或者再招来能完成任务的技术人员,这样会严重拖慢开发进度。

    问题四

  • 在第十四章的《质量保障》P304页中,提到“软件的开发过程有三个主要的特征:好、快、便宜”可是,咱们如何才能在这三个特征之间寻求一个平衡点呢?

    我的见解:我以为,不管是在软件工程项目中,仍是在平常生活中,都会遇到某些事情须要做出权衡,在不能全部方面都取最优的状况下,要在各个关系之中取得一个平衡。因此,在软件开发过程当中,能够经过质量成本控制,明确量化出开发过程当中的成本,例如后面介绍的CMMI理论,即实现了一个定量的软件工程质量等级划分。

    问题五

  • 在第十六章的《IT行业的创新》P350页中,提到“成功的团队更能创新”

    我的见解:创新,意味着改变,若是是一个团队或者公司已经作到了成功,那么上层领导可能就是认为我这种方式方法是正确的,甚至会造成一种圈子惰性,你们都习觉得常,前辈这么作已经取得了成功,那么我就按照这个成功的方法继续完成工做就OK了,并且,若是一旦有人冒头提出改变,阻力可想而知。可是,对于一个初生的团队来讲,作出改变的成本就会下降不少,并且想去改变的人也会有不少,由于他们还在摸索一个独特的操做以及运做流程,偏偏是更能创新的。

    4、了解目前主流源程序版本管理工具

  • Git

    1.什么是Git

    Git是一款开源的分布式版本控制工具,在世界上全部的分布式版本控制工具中,Git是最快、最简单、最流行的;做者是Linux之父:Linus Benedict Torvalds,当初开发git仅仅是为了辅助Linux内核的开发(管理源代码)。Git在国外已经很是普及,国内慢慢普及愈来愈多的开源项目已经转移到Git

    2.优势

    分布式的版本管理,对比集中式的版本管理系统来讲不会出现中心服务器死机就影响工做,而是能够先存储在本地,等服务器修改好还能够接着进行工做,而且Git的社区灵活,拥有丰富的资料来进行学习查阅,而且Git是开源的,它强调个体,而且对于公共服务器压力不会太大,大小项目都可管理,拥有良好的分支机制, Git的分支只要不提交合并,对其余人没有任何影响,而且Git是统一管理元数据,存放在称为.git的文件目录里面。

    3.缺点

    Git的版本之间的兼容性很差,可能在上个版本的项目内容放到另外一个Git版本会出错。
  • GitHub

    1.什么是Github

    Github是一个代码托管平台和开发者社区,开发者能够在Github上建立本身的开源项目并与其余开发者协做编码。创业公司能够用它来托管软件项目,开源项目能够免费托管,私有项目需付费。

    2.优势

    使用github原生的功能,就能够进行相似评论的功能,强调我的,符合hacker更看重名誉/成就感的天性,在功能设计简洁实用上手很快,可用性好,已有不少至关质量的各种项目和优秀开发者在上面。

    3.缺点

    国内访问速度太慢,常常出现connect time-out,并且不能很好的解决GB2312/GBK,对中文不够友好,wiki功能太弱,直接致使文档(对于开源项目很重要)常常被分离到一个独立站点

  • SVN

    1.什么是SVN

    SVN(Subversion)是近年来崛起的版本管理工具,被誉为cvs的接班人。目前,绝大多数开源软件都使用svn做为代码版本管理软件。

    2.优势

    它的客户机 / 服务器存取方法使得开发者能够从任何因特网的接入点存取最新的代码;它的无限制的版本管理检出 (checkout)的模式避免了一般的由于排它检出模式而引发的人工冲突;它的客户端工具能够在绝大多数的平台上使用。一样,SVN 也不提供对变动流程的自动管理功能。

    3.缺点

    SVN 安装和使用多采用命令行方式,学习曲线高,同时不提供对变动管理的功能

    [参考资料]http://www.javashuo.com/article/p-zcaiapir-gq.html

相关文章
相关标签/搜索