《构建之法》——第一次作业
这个作业 | 系统分析与设计 |
---|---|
作业要求 | 在这里 |
我在本课程的目标 | 了解真正的软件工程,认识软件开发的流程,学会团队合作开发、测试的模式,知晓构建一个完整的软件流程 |
课程在哪里帮助我 | 通读教材,明白完成一个完整的软件不仅仅靠的是技术,还需要前期的需求分析,设计,以及长期测试,维护等等 |
一、简单介绍一下吧
初次见面,先报个名号:我叫魏家田!哈哈哈!自我剖析一下,别人都叫我老干部。
不知不觉就到了别人口中的大三老学长,瞬间感觉自己又老了。。。回首过去,稍有惭愧,作为一名软件工程专业学生,在即将面对人生又一个岔路口的我在技术方面仍然拿不出手,总结原因,三个字,练得少;展望未来,
二、阅读与思考
1. 回想一下你初入大学时对软件工程专业的设想
-
当初你是如何做出选择软件工程专业的决定的?
其实在报志愿的时候也没想那么多,最初只是选定了两个大类,一个是材料类,一个是计算机类,恰好在西南石大的专业志愿里面软件工程排在了第一志愿,所以就来到了这个专业。
-
你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
在整体上还是比较符合我的期待,但是随着学习的深入,愈发觉得仅仅局限于老师上课所讲的知识是远远不够的,书本上的内容只能算是一个小Demo,可能书本上更侧重于定义的理解,但是把书本上的知识转化为实战经验还需要多多练习。比如,在暑期集训期间的JAVA实训,就是通过一个完整项目把死的知识利用了起来,才能有一个更深刻的理解。
-
你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
嗯。。虽然说目前来看还不足以胜任软件开发的工作,但是,对于软件工程领域来说我还是抱有很大兴趣的,尤其是看到一步步设计出来的功能正常实现的时候,那种愉悦满足的心情令我非常享受。
-
将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
以后必然是要从事软件开发相关工作的。以后应该就是留在成都吧,这是一座来了就不想走的城市。公司的话可能会选择一个石油相关的企业做开发相关工作
2. 对照前人们走过的路和描述未来发展,现在的你
-
自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?描述你做的最复杂的项目/作业。
从进入这个领域也有两年时间了,但是说到专业知识也只有C/C#语言,数据结构了,而且数据结构也渐渐淡忘了内容。谈专业能力应该为时尚早,技能的话,应该能够实现一些前端开发,和部分后端代码内容。代码量的话,说起来真正可以算得上真正项目代码量也没有太多,可能也仅仅千行。最复杂的项目,emmmmm,就是今年暑假期间技能实习做的一个基于Dubbox的分布式电商系统的开发吧。
这个项目搭建了商城端,以及两个角色的管理系统。在商城界面设计了购买商品、购物车、搜索、支付、订单等相关功能,采用了spring-boot框架+Redis缓存+Solr搜索引擎集群分布技术,加入了CAS单点登录设计、Spring-Security安全框架和Freemarker网页静态化技术。
-
离成为一个合格的本科毕业生,在专业知识、技能、能力上还差距哪些?
作为一名本科生,要经历大学四年的系统化培养,在和一些培训机构的“速成Coder”竞争的时候,我们的优势是对于整个专业的系统化视野,以及有着良好教育基础的学习能力,但是我们欠缺的是大量的实战代码量积累,所以在编码能力上,我们还需要加强!
3. 目前是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
-
对照以上你阅读的前人们的经历,你的选择是什么?
通过品读前人经验分享,以及两年来总结思考,发现在当今社会大环境下,作为一名普通高校的本科毕业生,要想进入理想单位,拿到理想的薪水,确实有一定难度,所以,要想在本专业领域内有一定的建树,还是有必要继续攻读研究生,只有在这个领域不断深入,不断学习,才能在竞争日趋激烈的社会中占据一席之地!
-
在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
优势:这两年在实验室和老师也做了一些工作,积累了一定的成果,相比于其他人要在竞赛经验上有着更深的熟悉。
劣势:代码量太少了!英语也是弱项!
-
针对你的选择,你给自己的大三设定的规划安排是什么?
多动手,主动加入老师项目组,承担编码任务,积累更多的实战经验。深入了解java语言,除了做一个代码搬运工,还应该去了解和思考一下java技术体系中这些技术是如何实现的,认清这些技术的运作本质,是自己思考程序这样写好不好的基础和前提,当我们在使用一门技术时,如果不再依赖书本和他人救能得到这个问题的答案,那才算是升华到了不惑的境界。
-
你对于实现自己的梦想已经做了或者计划做什么样的准备?
参加高质量赛事;加入实验室老师开发项目组,并且已经承担起部分编码任务
三、提有质量的问题
问题一
- 在第二章的《个人技术流程》P25页中,提到“单元测试必须要由最熟悉代码的人(程序的作者)来写”
问题二
- 在第四章的《两人合作》P70页中,提到了断言,但是断言就是断点吗??还是一个输出验证语句??
问题三
- 在第六章的《敏捷流程》P111页中,提到“如果团队成员都对某个任务不感兴趣……团队成员小飞想认领任务A,但是A的实现要依赖于任务B,但是B没有人认领,小飞也不具备足够的知识去完成B,怎么办”
问题四
- 在第十四章的《质量保障》P304页中,提到“软件的开发过程有三个主要的特征:好、快、便宜”但是,我们如何才能在这三个特征之间寻求一个平衡点呢?
问题五
- 在第十六章的《IT行业的创新》P350页中,提到“成功的团队更能创新”
四、了解目前主流源程序版本管理工具
-
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 安装和使用多采用命令行方式,学习曲线高,同时不提供对变更管理的功能
[参考资料]https://blog.csdn.net/zhourui1982/article/details/4871896