软件工程第一次阅读作业

一、提问

1.第二章 好的单元测试的标准

单元测试必须由最熟悉代码的人(程序的作者)来写。

  虽然理论上来讲没有人会比作者更了解自己的代码,但正因如此,作者往往只能查验那些他在编写过程中就已经考虑到的问题,无法发现自己没有考虑到的问题。在实际工程中,测试和代码编写往往是两个不同的部门来负责,因此我认为结对互相编写单元测试可能会更好(前提是知道对方的需求)。

2.第四章 代码设计规范

函数最好有单一的出口,为了达到这一目的,可以使用goto。只要有助于程序逻辑的清晰体现,什么方法都可以使用,包括goto

  goto函数真的有必要使用吗?因为很多时候为了简便,并不想设定唯一出口,以往的编程中没有这个习惯。

3.第四章 代码复审

  代码复审和单元测试的区别在哪?

4.第三章 软件工程师的发展

  身边的很多同学都有考计算机二级,然而我问了一下同系的同学,基本上没有人去考过级,这种考级对于我们真的有必要吗?它并不像导游证之于导游专业,会计证之于会计专业那样不可或缺吧。

5.第九章 领导力——高效的团队讨论

  在上学期的一些课程中,我所在的团队经常召开会议,但是往往是无功而返,最终什么都没有改变(就像老师提到的“事后诸葛亮会议”)。在这学期的软件工程课程中,长达十五周的团队项目肯定需要开很多会议,尽管书中已经给过一些建议,但是我们当中并没有一个类似PM的人,该如何避免重蹈覆辙呢?

6.第十二章 用户体验

  如今软件的用户体验,除了流畅和功能强大之外,用户往往希望广告能够尽可能的少,但在软件开发者的角度考虑,广告投放似乎是必要的。虽然在我们的课程中不必考虑这个问题,但在实际运用中如何投放不会让人反感的广告呢?

7.第十六章 IT行业的创新

不但大众不喜欢创新,甚至连创新者自己都不例外,有些创新者甚至恨创新。

  在这一部分中,老师提到了电报和电话的矛盾。实际生活中,雅虎和阿里巴巴似乎更让人熟悉。同是互联网大头,一个捷足先登却不思进取,另一个追求创新后来者居上。在互联网时代,拒绝创新似乎是致命的,但是在我们的学习过程中,我们不断地去了解基本概念,不断的去学习那些旧知识。学校似乎没有考虑为我们灌输新兴思想(AI算是当下正火的),这是为什么呢?

二、“软件”和“软件工程”概念的提出

  “软件”的概念最早由阿兰图灵在1935年提出,但也有人认为软件正式出现在1958年John Turkey的论文中。

  “软件工程”的概念最早由Margaret Hamilton在1968年联邦德国召开的会议上提出。

三、趣事

1、

《美丽心灵》上映后,有记者采访纳什:电影拍得真实吗?恐怕艺术加工的成分很大吧。纳什:你说得对,其实查尔斯没那么高。

  ——查尔斯是约翰纳什臆想中存在的室友。

2、

  著名计算机科学家Donald Knuth(高德纳)写的排版软件TeX版本号可以算是个趣事,从TeX第三版开始,之后的升级是在小数点后加入一个新数位,使之越来越接近Pi的值。TeX目前的版本是3.1415926。
  
  以上趣事均来自于知乎。

四、当前主要使用的源程序版本管理软件和项目管理软件的优缺点

1.软件使用量排名

  1、github:约31,000,000用户量

  2、SourceForge:约3,700,000用户量

  3、Bitbucket:约5,000,000用户量

  4、GitLab:约100,000用户量

2.各软件的优缺点

  Git:

    1.是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

    2.速度快、灵活,分支之间可以任意切换。

    3.离线工作,不影响本地代码编写,等有网络连接以后可以再上传代码,并且在本地可以根据不同的需要,本地新建自己的分支。

    4.对初学者不够友好。

    5.国内速度较慢。

  Trac:

    1.有着良好的扩展性。

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

    3.需要安装很多插件,较繁琐。

  BUGZILLA:

    1.检索功能强大。

    2.后端数据库支持功能强大。

    3.配置文件较复杂。

    4.本地化不够友好。

  Mercurial:

    1.命令兼容SVN。

    2.扩展性强,append only的存储结构。

    3.很多命令有双字母的简称,使用起来方便。如hg commit的简称为hg ci。

    4.功能太过简陋。

 

posted @ 2019-03-04 10:14  吴昊1606  阅读(379)  评论(6编辑  收藏  举报