第一次阅读作业

这个作业属于哪个课程: https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2713
这个作业要求在哪里: https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2713
我在这个课程的目标是: 掌握软件工程开发的具体流程和需求
这个作业在哪个具体方面帮助我实现目标: 对本专业的深入了解,对未来发展方向的引导

一.建立博客并介绍自己

我的名字叫孙玥祺,来自软件三班。

世界很大,喜欢出去走走,去各地旅游看风景,品美食,写游记。喜欢文学,写文章,看书,发表自己的感慨。我的闪光点我认为是有热情,肯上进,愿意为自己的目标不懈努力。向往好的事物,并努力向前。比较乐观,以积极的心态面对未来。

二.阅读与思考

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

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

    刚入大学,因为家人的填的志愿,我读了物联网工程这个专业。大一上学期可以转专业的时候,我才真真开始考虑计算机这门大的课程,我该从哪里入手来学。是从年级大会上了解到物联网,网络工程是硬件方面,而软工和计科是软件方面。所谓的硬件我的理解是偏于能看见的,可视化的。而软件方面则是像app一样,是电脑上的应用,是界面,是摸不着的。后来我查阅了百度资料,明白硬件系统是看得见摸得着的物理部件或设备,就是类似于主板。而软件是以程序和文档的形式存在,通过计算机运行来体现 他的作用。同时我也参观了物联网的嵌入式团队,他们所展示的是将芯片放入赛车里,用遥控器通过网络来控制。而软件工程的团队则是在电脑上向我们展示所做的网页,应用等。巨大的差异,让我认识到也许硬件方面还需要一个人具备立体思维的模式,我觉得我不合适。后来我参加了物联网工程的团队,其中偏于硬件方面的方向也比较单一,而我却被团队在做的web前端的页面所吸引,原来自己也是可以做多彩的网页样式,可以设计成自己喜欢的样子。所以我选择去了软件工程,因为喜欢前端的设计,也考虑的软件市场比较成熟,有更多的路可以选择。

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

我觉得过去的两年接触的课程我自己还是比较满意。首先我接触的是语言方面,学习了C语言和C#,自己学习了C++。学习了这三门语言,我也是第一次感受到作为程序员的快乐,第一次自己可以编写程序,可以做出很多题目,可以调用函数,可以用递归做看似不可解的汉诺塔问题,甚至可以做一些自己小时候玩的简单游戏,这都是学习语言课程带给我的。其次,我接触到了数据结构,了解了更多的算法,可以写出更有 难度的代码,也知道了所谓运行的效率原来可以靠时间复杂度和空间复杂度计算的,也了解了更多的排序方法,算是自己对C语言的了解更进一步。后面学习了数据库,我也觉得自己离现在所谓的大数据时代近了一步,更加接近那个我心目酷酷的程序员的样子。但到现在还有一点小小的遗憾,因为和没有和项目组一起做过一个大的程序,想在接下来的时间中通过课程多去实践。

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

我比较喜欢,但在这个领域我觉得我还不是很擅长。因为在之前的学习当中我认为我在编写代码这方面还是有所欠缺,逻辑能力不够强。就比如在学习数据结构的时候,我学的线性表,动态链表以及栈,队列。理论知识和代码理解起来都比较轻松,但真正写代码的时候还是很困难,不知道如何下手,这学期我报名参加了蓝桥杯比赛,但在准备的时候,我才发现那些程序题是正真的讲数学思维与编程方法结合组成一道题,在这种灵活运用上我还是欠缺的很多。

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

我将来想从事这方面工作,我想去北京,公司的话还没有想好,想去的岗位是web前端开发,还是坚持我现在所喜爱的设计领域,希望自己设计的网络界面可以让人们眼前一亮。

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

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

我觉得我具备的专业知识是这两年所学的C语言,C#,C++,通过数据结构我能写出较复杂的C语言代码,在团队,在老师的帮助下学习了PS,对画面的排版,制作有一个基本了解,能力方面,我觉得我对一个项目的要求可以做到基本了解,可以简单写出一些程序。代码量大概有2000条。

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

离成为一个专业的软件工程本科毕业生,我觉得在专业知识上,我还是做不到把一个语言掌握透彻和灵活应用。其次,我的专业知识面比较狭窄,除了课堂开设的课程,没有学更多的与专业相关的课程。技能和能力上,我没有参加过大的项目,没有真正的和团队合作过,没有独立的完成过一个工程,可能在合作和工作的复杂度剖析上我可能很欠缺。在自学能力上,不能较快的掌握一门新语言。

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

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

我的选择是出国,我觉得算是对自己一种升华。读了老师推荐的一些文章,我觉得很多人选择读研或出国去继续加强自己的能力,并有充分时间去准备简历去自己喜欢的公司。其次,读完文章令我最大的感慨是我从他们的文字中感受他们对于自己职业的喜爱,也有人提到,选择职业一定要选择一个自己足够喜欢的领域才能有激情干下去。我到现在学过的一些课程,仅仅是对前端一些简单的了解下,比较喜欢,所以我想去更深入了解它,想在更深入的学习中,去寻找它的乐趣。而我认为我可以通过出国这条路,去更多的学习和接触,去感受兴趣带给我的动力。

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

优势我觉得是我肯学吧,我认为在年轻的时候应该去为自己的目标努力一把,我对学习可以保持热情,愿意去学好,去上进。还有家人的支持吧,没有后顾之忧。劣势的话,可能是英语还没有学的足够好,对于编程能力还没有达到一个很高的水平,还有自学能力还要提高,在自学的时候不能够把知识掌握透彻。

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

我的计划是在校期间,首先是提高绩点和平均分,达到我想申请大学的要求。其次,参加数学建模比赛和一些编程类的课程,继续加强自己薄弱的方面。争取参加项目,积累经验,多接触一些课外知识。还有最重要的是大二暑假准备雅思的第一次考试,并在大三考出一个满意的成绩。大三进公司参加实习和一些志愿者活动,增加阅历。

.提有质量的问题

1.第五章:团队与流程 

5.2.2业余剧团模式中“不同的人会挑选不同的角色。在下一个剧目中,这些人也许会换一个完全不同的角色类型。”问题:读完这段话我的理解是在这种模式下是不是每个人都要掌握不同的技能,而且要足够熟练才可以顺利完成。那是不是对一个人工程师的要求过高,现在有没有这样的团队在使用这样的方式。

2.第六章:敏捷流程

“订单上的任务是团队成员根据自己的情况来认领。由团队来主导任务的估计和分配。”问题:那么遇到困难或者大家都不感兴趣的问题,没有人愿意承担此类问题,又恰巧是很关键的,怎么样合理的分配人员,怎么样才能让团队中的愿意做,任务刚好能够分配完。

3.第十一章:软件设计与实现

11.3 形式化的方法中提到“很多软件需求可以抽象为对符号的运算和变换”问题:形式化趋向于数学化,不太明白如何用数学和推理将软件实现出来,有没有类似的表达和案例来说明这种方法。我通过资料了解到如果一个方法有良好的数学基础,那么它就是形式化的,典型地以形式化规约语言给出。也就是说符合此类数学特征才可以使用还是存在广泛性

4.第十五章:稳定和发布阶段

“推迟。如果我们的软件是真正解决用户的问题,是有价值的,那它一定会有下一个版本。”问题:我读这个解决bug问题的时候,我的理解是在这种很有价值的情况下,是不处理这个问题,等到需求量大的时候,再推出下一个版本顺带解决掉这个问题。我不知道我这样考虑这种方式对不对。

5.第七章:实战中的软件工程

“那些我觉得用户会喜欢的东西要及早和用户交流。”问题:我想知道及早这个时间点是怎么样把控比较好,是每一步跟进询问客户的意见还是说做出一个大概的模板给客户,让客户提出问题。这个交流的时间怎样才能更有效,更好地完成客户的要求,达到一个满意的效果。

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

1.    GIT

Git 是用于 Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持(wingeddevil注:这得分是用什么样的服务端,使用http协议或者git协议等不太一样。并且在push和pull的时候和服务器端还是有交互的。),使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。

优点:

1.适合分布式开发,强调个体。

2.公共服务器压力和数据量都不会太大。

3.速度快、灵活。

4.任意两个开发者之间可以很容易的解决冲突。

5.离线工作。

缺点:

1.资料少(起码中文资料很少)。

2.学习周期相对而言比较长。

3.不符合常规思维。

4.代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。[1]

2.    Bugzilla

Bugzilla 是一个开源的缺陷跟踪系统(Bug-Tracking System),它可以管理软件开发中缺陷的提交(new),修复(resolve),关闭(close)等整个生命周期。

Bugzilla是一开源Bug Tracking System,是专门为Unix定制开发的。

优点:

⒈ 强大的检索功能

⒉ 用户可配置的通过Email公布Bug变更

⒊ 历史变更记录

⒋ 通过跟踪和描述处理Bug

⒌ 附件管理

⒍ 完备的产品分类方案和细致的安全策略

⒎ 安全的审核机制

⒏ 强大的后端数据库支持

缺点:

1. 安装需要Perl和配置MYSQL数据库,过程比较繁琐

2. 修改配置文件比较麻烦

3. 英文版的,能汉化但是汉化后容易出现乱码[2]

3.   Trac

Trac是一个为软件开发项目需要而集成了Wiki和问题跟踪管理系统的应用平台,是一个开源软件应用。Trac以简单的方式建立了一个软件项目管理的Web应用,以帮助开发人员更好地写出高质量的软件;Trac应用力求不影响现有团队的开发过程。

优点:  1.Trac做一个SCM配置管理平台,意味着它有良好的扩充性

        2.Trac的权限体系是比较完备的设计

        3.非常灵活,可以随心所欲的定制,可以和TortoiseSVN集成。

缺点:  1.不支持多项目,

        2.需求和缺陷没有分离,

        3.用 wiki 来替代 Word 等工具编写文档对于产品策划来说门槛太高了,

        4.中文化不完整,美术人员接触起来困难重重,

        5.不显示中文名,本地化做得很差,

        6.核心功能很少,不安装插件基本上没法用。[3]

[1]摘自百度百科

[2]摘自博客园

[3]摘自CSDN

 

原文地址:https://www.cnblogs.com/230332663abcd/p/10542502.html