软件工程原理-第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1
这个作业要求在哪里 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2713
我在这个课程的目标是 理解软件的生命周期,掌握软件开发运营和维护的基本流程。
这个作业在哪个具体方面帮助我实现目标 完整的浏览一遍书,对软件的开发运营和维护有了一个总体的认识。

 

 

 

 

 

 

 

 一.建立博客并介绍自己

  (博客已建立完成)

  从小对电脑着迷,当然刚开始时是因为电脑能玩很多好玩的游戏,一直渴望拥有一台自己的电脑。

  后来随着对计算机进一步的了解,获得了很多新的技能。

    如:修改单机游戏的数据,人物无敌,金钱无限等;计算机出毛病了,知道如何解决;系统崩溃了,知道如何重新装系统;计算机硬件坏了,知道如何配置硬件等。

 

二.阅读与思考

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

  刚毕业的时候还不知道要选什么专业,对自己的未来一片茫然。问亲戚,问朋友,问老师。最后,结合自己的兴趣,听取了我一个研究计算机的表哥建议,报考了软件工程专业。

  过去的两年对专业课的学习中,发现了一个崭新的计算机世界,并且热爱着它。前两年的专业课都很基础,总觉得意犹未尽,所以更加渴望着更加深层次的学习。

  我认为,在计算机方面的学习中,最重要的是自学能力,自己悟出来的道理远比老师灌输的清晰且深刻。这就需要有一定的悟性,和动手能力。多看书,多实践,进步会非常快。遇到问题时尽量自己想,自己找到解决问题的途径。当自己经过不懈的努力解决出一个有难度的问题时,非常有成就感,这会非常难忘,且让你对自己越来越自信。

  未来我会选择软件开发相关的工作,最好是回到北方,北京上海一带,当然,南方也挺好,唯一的缺点就是离家远了些。

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

  已具备的专业知识:C语言,C++,数据结构,数据库,高等数学,离散数学,线性代数,概率统计,以及一些零散的专业知识;自我管理能力,时间管理能力,语言沟通能力等。

  距离成为一个合格的软件工程专业的本科毕业生还差的很多,如组织管理能力,系统分析与设计,需求分析,前端后端等。

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

  我选择考研,我选择考研并不是害怕工作,或者跟风。相反,我非常想要工作积累经验,我认为,知识的确很重要,但是经验更加重要。如果没有经验,只有知识的话,就相当于纸上谈兵。当然,要在有一定基础知识之上才能去得到经验,所以,通过考研,打好基础,并证明自己的学习能力与自控能力。

 

 

三.提有质量的问题

问题一:

  来源:2.2 效能分析工具——P31“先用抽样的方法找到效能瓶颈所在,然后对特定的模块用代码注入的方法进行详细分析”

  问题:我认为用抽样的方法找效能瓶颈的所在有点困难。首先,使用抽样的方法是程序在特定的输入下调用的函数,这时候找出的调用次数较多的函数不具有普遍性。如果下一次输入不一样,另一些函数调用的更多,那么只优化特定情况下的代码块不是一个很优的方法。

问题二:

  来源:4.2.6 命名——P67“避免可要可不要的修饰词......可以问自己,如果在变量名中把这些字去掉,程序会更加难懂么?如果答案是否定的,那么可以把这些修饰词去掉。”

  问题:我认为“问自己”不是很客观。一方面只是自己认为去掉后不会使程序更加难懂,而别人读的时候可不一定这么认为;另一方面只是现在的自己认为去掉后不会使程序更加难懂,而以后的自己不一定这么认为。我认为应该有一些特定的规则来命名,而不是模棱两可的,有时候自己也拿不定主意。

问题三:

  来源:5 团队和流程

  问题:这章介绍了很多种团队模式和开发流程,那么,我们在具体操作中,该如何选择呢?而且我们知道了最优的模式和流程之后又会受到很多方面的羁绊而无法实现,该怎么办?

问题四:

  来源:8.3 获取用户需求——用户调研——P160“我们有这么多各式各样的工具,这是好事,但也会有副作用”

  问题:既然说需求分析格外重要,又为什么不能做到极致,而说做过头了也会失败?那么该如何把握住那个度,不会过头呢?

问题五:

  来源:9..3 PM做开发和测试之外的所有事情——P186“我们认为好的产品是在平等讨论(甚至争论)的基础上产生和完善的”

  问题:PM做的是开发和测试之外的所有事情,包括对项目负责,对项目安全的考虑,和对程序员的任务分配等等。这其中难免会出现上级对下级的关系,而且一旦有人与PM的思维不同,PM就可以用其他手段来压制程序员,那么在这样的情况下如何做到平等?

问题六:

  来源:13 软件测试

  问题:这一章提到了很多的测试方法,那么如何去选择恰当的方法?而且有些方法存在相交的情况,那么用这个方法测试无误后需不需要再用另一种方法进行测试?

 

 

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

Git:分布式管理

  优点:1.快

     2.简单

     3.开源

     4.分布式管理,轻松管理多个分支

     5.支持本地工作,可以不联网

  缺点:1.保密性差

     2.不符合思维逻辑

SVN:集中式管理

  优点:1.方便,容易上手

     2.安全

     3.代码统一

  缺点:1.分支管理不灵活

     2.需要联网

     3.较慢

Trac:

  优点:1.扩展性好

     2.权限管理完备

     3.灵活,可定制

  缺点:1.不支持多项目

     2.汉化不好

     3.核心功能少,需要插件支持

 

posted @ 2019-03-20 07:56  MlllX  阅读(335)  评论(3编辑  收藏  举报