正式开始学软件工程原理之前,博主虽然从师兄师姐或者老师那里都听过,这门课很重要,但是对于这么多的理论,内心深处对其并不感冒。
但当你深入阅读,你会发现这门课许多的知识都和你的工程息息相关。以下就谈谈自己的收获。。(初次写文,若有不对,请大家多多包涵)
软件工程原理及方法 |
<课程的链接> |
作业要求 |
<作业要求的链接> |
我在这个课程的目标是 |
掌握软件开发流程 掌握团队合作思想 规范化开发 |
这个作业在哪个具体方面帮助我实现目标 |
提前了解前辈的学习经验 阅读更多跟软件工程相关的资料 |
一.自我介绍
软件工程3班张棋,我的博客地址:< https://www.cnblogs.com/gentlemanzq/>
作为一个在软工工程这个专业混了2年的油条,却依旧是编程道路上的小萌新。说实话自己可能没什么特点(算法和工程倒是都挺差的QAQ),或许就是挺爱好自己这个专业的,保持了从刚进专业时一如既往的热情。
二.阅读和思考
(1)回想一下你初入大学时对软件工程专业的畅想
- 当初你是如何做出选择软件工程专业的决定的?
从小就喜欢玩游戏的我,直至如今依旧迷恋计算机。在高考完了之后,大家都还在迷惑选择什么专业之时,我就带有明确的目标性,我要学计算机,再加上自己的姐夫就从事着软件工程师的工作,在那时他与我的交流,为我打开了编程世界的大门,让我对计算机这个行业产生了憧憬。而在计科和软件两个专业之间,我也没有考虑太多,可能是我不喜欢硬件的原因?,十分果断的选择了软件工程。
- 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
说实话在大一这个学年并没有感觉到软件工程这个专业的特色。但是,我清晰记得老师说过,其实很多其他专业到了最后都走上了软件工程专业的道路。至于到大二的课程,面向对象,数据库,其实只是比其他的专业,更快的能够上手工程。虽不能满足期待,但是也不差。博主码瘾少年爱编程【1】和博主荆棘人【2】所想表达学校基础课程才是最重要的思想,我深感同意。没有基础何谈提高,学校课程也需要好好学习。对于《我是一只IT小小鸟》的
- 你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
软件工程是我非常喜欢的领域,每一次高中同学聚会,我会非常骄傲的说,我是学软件工程的。(虽然同学都比我厉害......)虽然不是特别擅长,但是除了这个好像自己也没有更加擅长的了?。代码敏感性没有别人强,算法数学功底没有别人强,工程思路没有他人清晰。。。但,对我个人而言,软件工程是我擅长的领域。
- 将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
将来一定会从事软件开发相关工作,在读完研之后,打算先成为一名合格的软件工程师。
想去的城市:上海 杭州 深圳。(除了这三个就是留在成都了)
想去的公司:现在并没有了解太多,知道的都是名气极大,如今差距还很大的公司。。可能会选择工资,岗位更加合适自己的公司
岗位:软件测试工程师,软件架构师
(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你
- 自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?
- 熟悉语言C C# JAVA 前端html css js ,熟悉数据库操作,并能运用。
- 了解接触一部分基础算法(限于自身未能深入学习)及数据结构
- 有过团队合作编程经验,了解一定开发流程(深感现状悲哀)
- 和他人协作开发过软件,个人在项目代码量过万。如果除去重复操作和非专业知识算法,单个项目代码量应该在7000左右
- 离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?
- 首先欠缺,编程规范,没有分层意识,直到上一个项目开发,才开始了解三层构架 UI BLL DAL
- 欠缺技能,至今对框架的了解运用甚少,对人工智能感兴趣,加入百度菁英俱乐部,但是python还未上手,更别谈百度的pandlepandle框架
- 团队协作经验少,真正稍微大一点的项目开发合作只有一次
- 目标全栈(只是说说而已...请别当真)
(3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径,也有许多不同的分支。
- 对照以上你阅读的前人们的经历,你的选择是什么?
我的选择是之前就决定了。考研,虽然相较于学习更喜欢技术,更想出去工作,但是为了以后更好的发展,综合考虑还是决定考研(专硕和学硕还没有决定,大概率专硕.......)
- 在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
优势:
- 第一个优势就是目标明确,在他人彷徨时就已经定好了目标
- 在考研复习之前多积累一点专业知识,在考研后,能更快的投入工程。
劣势:
- 专业知识肯定没有直接工作的同学学的好
- 职场经验相较于工作实习的同学低。
- 针对你的选择,你给自己的大三设定的规划安排是什么?
- 在大二时进行专业课提前选修,减少大三课程量
- 认真学习建模2,准备校赛,争取学习建模三参加国赛。
- 前段时间学习了SpringBoot框架,之后熟悉掌握并能运用。
- 在完成以上目标之后,接项目练习一下,如果时间允许,秉着资源合理利用,打算深入学习一下百度的pandlepandle。
三.提有质量的问题
1.
第三章的3.2节关于泛化这一观点,其实我觉得适当范化是可以的,每次做程序,写项目,师兄会说这个东西,那些东西打个包,抽象出来就不用这样麻烦了。操作了一下也感觉确实是这样,所以我觉得适当泛化也是可以的。
2.
第四章4.5关于结对编程,我看了有关于结对编程的文字,有这个问题:“结对编程究竟是降低效率还是提高效率”。尤其对于4.5.3,不间断的复审。在我现如今做的项目中,我认为两个人结对编程不如分开协作式开发,这样效率高一点。尤其是复审阶段,由他人一次性复审,我感觉效率还是高一点。而且两人结对编程,一会就进行角色互换,我感觉反而会影响效率。
3.
第六章 6.1节,读了有关于敏捷流程的相关文字,对于传统流程和敏捷流程的优缺点还有点迷惑,尤其是其中一点,由于我自己的理解,敏捷流程好像对于用户随时更改需求,是赞同并且欢迎的?。但是作为一个程序员来说,用户随时变化需求,是一件非常让人苦恼的事情,对于这一点,为什么敏捷流程这么受欢迎,还很迷惑。
4.
第八章8.3节,关于获取用户需求的方式,个人认为用户调查问卷没有多大用,因为自己就没有几次认真填过。
5.
第17章,关于职业道德问题,关于这一点,现在仅在大学团队当中都存在着只享受好处,不付出劳动的人,怎么样才能杜绝这种人的不劳而获?
四.了解和调查源程序版本管理工具
关于Git
优势:
1.是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
2.分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。(源自百度百科)
缺点:
1.当时自己使用Git的时候,真的是一步一步都得照着网上来,完全不能自己一个人上手,并且没有找到过中文帮助文档。
2.代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。(源自百度百科)
关于GitHub
优点:
1.Github具有单一性,只支持Git格式的版本库托管,而不像其他开源项目托管平台。
2.GitHub 提供在线编辑文件的功能,不熟悉 Git 的用户也可以直接通过浏览器修改版本库里的文件。
3.GitHub 对 Git 版本库提供了完整的协议支持,支持 HTTP 智能协议、Git-daemon、SSH 协议。
4.vs直接就可以使用GitHub合作开发。很方便有木有!
缺点:
1.上手GitHub需要大量实践和时间。
2.新手容易搞错分支和主支之间的关系,导致出现代码错误。
关于SVN
之前使用过SVN和GitHub 个人还是觉得GitHub简单点,SVN是搭配服务器直接使用的。所以我还是觉得GitHub简单点。。虽然乌龟壳操作也很简单。
优点:
1、 管理方便,逻辑明确,符合一般人思维习惯。
2、 易于管理,集中式服务器更能保证安全性。
3、 代码一致性非常高。
4、 适合开发人数不多的项目开发。
缺点:
1.要使用服务器 (虽然云服务器也很便宜)
2.服务器压力大,数据多了,交互过程等待时间过长(甚至有可能计算崩掉)。