软件工程第一次阅读做业

项目 内容
本次做业所属课程 2019BUAA软件工程
本次做业要求 阅读《构建之法》,初步了解软件工程
我在本课程的目标 熟悉软件工程相关规范,学会结对编程和团队编程
本次做业的帮助 在《构建之法》的基础上解惑,在老师帮助下了解软件工程

1.快速看完整部教材,列出你仍然不懂的5到10个问题

问题1 第二章 我的技术和流程 2.1 单元测试

问:若是用随机数以增长测试的真实性,好么?git

答:通常状况下很差,若是某个随机数致使程序出错,可是下一次运行又不能重复这一错误,则于事无补。咱们仍是要用随机数等办法“增长测试的真实性”,但不是在单元测试中。单元测试不能解决全部问题,没必要指望它会发现全部的缺陷。……github

​ “某个随机数致使程序出错,可是下一次运行又不能重复这一错误”,在随机生成单元测试的时候,为什么下一次运行不能重复这个错误呢?随机生成的数据对测试者来讲应该是可见的,在随机生成单元测试的时候,若某个随机数致使出错,可不能够记录这个数据,下一次测试就不须要从新随机生成了呢?数据库

还有,对于相似随机数生成器这个程序自己,若是要进行单元测试要怎么进行呢? 这是我在查询以上疑问的时候遇到的新问题,可是彷佛没有获得解答。编程

问题2 第二章 我的技术和流程 2.3 我的开发流程

我的项目耗时对比记录表编程语言

……函数

·若是数据不许确或有遗失,怎么办?让工程师编造一些?工具

​ 正如书中提出的问题,当PSP中数据不许确或有遗失应该怎么办呢?我我的以为编造应该是不可取的,这样失去了PSP的意义。在回忆不起来的时候,若是单项时间缺失,能够从其余项目来计算时间;若是数据多项缺失… 有没有什么补救措施呢?gitlab

问题3 第三章 软件工程师的成长 3.3 技能的反面

​ 书中用魔方的精通来类比编程技能的精通,这样说来,C++之类的语言精通应该远比C语言困可贵多,但即便是c语言,达到“精通”的标准也有必定难度。不少人编程的过程都被调侃或者自嘲为“面向谷歌编程”,那么是否意味着一门编程语言,当我还不能脱离文档或者谷歌独立完成一个项目的时候,我就不能声称我“精通”这门语言呢?单元测试

问题4 第三章 软件工程师的成长 3.4 技能的反面 练习与讨论

​ 在本章的练习与讨论里看到一个有趣的问题,也就是练习与讨论的第四题学习

​ ……

他愈来愈意识到本身原来设计中的弱点,……

若是如今就改弦更张,那势必要影响本身原来估计的准确性,并会花费额外的时间,这样他的老板、同事也许会所以看不起他。若是他循序渐进地按既定设计完成,最后整个团队还要花更多时间在后续集成上,但那就不是他我的的问题了,怎么办?

​ 这个问题感受有那么一点点相似“电车困境”,对于这个问题,我我的的见解是向团队说明本身的失误,并想办法更正之前的错误,后者确定是不可取的,浪费整个团队的时间同时也是浪费本身的时间。可是我在这里想提问的是,有没有更好的解决方案呢?

问题5 第四章 两人合做 4.2 代码风格规范 4.2.4 断行与空白的{}行

if(condition){

​ DoSomething();

}

else{

DoSomethingElse();

}

​ 书上提倡每一个大括号都占一行,可是没有提到过如上的大括号换行规范,即一个第一个大括号不换行。我以为这种写法也是相对清晰的,而且在网上搜索了一下,采用上述格式和书上的格式D的人都有,甚至你们戏谑地称对方为“异端”。那么第一个大括号换不换行究竟有没有一些我没有考虑到的讲究呢?实例代码比较简单,显得我在钻牛角尖,可是我在想若是在复杂的代码中是否两者的某种优点或者劣势会被放大。

问题6 第四章 两人合做 4.2 代码风格规范 4.3.4 如何处理C++中的类

……

4)当你拿不定注意的时候,用成员函数,不要用运算符。

请问为何这样说呢?我是这样想的,拿不定注意的时候,说明两者皆可,这个时候运算符重载会使得代码可读性更高,尤为是有嵌套调用的时候,因此我我的以为运算符更好,不知道为何要这个时候要用成员函数。

问题7 第十一章 软件设计与实现 11.5 开发阶段的平常管理

​ 文中的提到设定一个阈值,若是开发人员Bug数量超过这个阈值则须要他专心修复Bug,也就是掉进“小强地狱”。对于一个新的项目组,假如你们的代码能力咱们都不是很了解,而自己这个阈值又不适合常常修改,那到底应该如何制定出合适的阈值呢?制定很差对于项目进度的影响是否会有负面效果?

2.请问 “软件” 和 “软件工程” 这些词汇是如何出现的 - 什么时候、何地、何人?

软件:

根据维基百科

The first theory about software—prior to creation of computers as we know them today—was proposed by Alan Turing in his 1935 essay On Computable Numbers, with an Application to the Entscheidungsproblem (decision problem).

软件理论的提出者是 Alan Turing

软件工程:

根据维基百科

1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在那次会议上第一次提出了软件工程(software engineering)这个概念.

3.你们知道了软件和软件工程的起源,请问软件工程发展的过程当中有什么你以为有趣的冷知识和故事?

著名计算机科学家Donald Knuth(高德纳)(学计算机的确定知道这我的)写的排版软件TeX版本号能够算是个趣事,从TeX第三版开始,以后的升级是在小数点后加入一个新数位,使之愈来愈接近Pi的值。TeX目前的版本是3.1415926。于2008年3月更新。

这个程序很稳定,高德纳许诺要是谁发现一个bug,就奖励他一些钱(1美分开始,每一年翻倍),通常真的发现bug的人,会把支票裱起来。

做者:FMiaoZ

连接:https://www.zhihu.com/question/20774002/answer/16134516

来源:知乎

著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。

在知乎查找到一则有趣的故事,在此就直接引用了。

4.上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?

目前流行的包括Microsoft TFS、git、Trac、Bugzilla等。

  1. git(github、gitlab等)

    • 优势:
      • 功能强大,使用方便。
      • 用户基数大,方便用户间交流学习。
    • 缺点:
      • 初期有必定学习成本。
  2. Trac

    • 优势:
      • 轻量级。
      • 插件丰富,可拓展性强。
    • 缺点:
      • 不支持多项目。
      • 需求和缺陷没有分离。
      • 核心功能不多,不安装插件基本上无法用。
  3. Microsoft TFS

    • 优势:
      • 易于使用。
      • 高度集成其余工具(VS、ItelliJ等).
      • 自动化生成和发布。
    • 缺点:
      • 用户数量不够多。
  4. Bugzilla

    • 优势:
      • 丰富的配置设定,定制能力强
      • 免费开源
    • 缺点:
      • 装须要Perl和配置MYSQL数据库,过程比较繁琐
      • 修改配置文件麻烦
      • 汉化容易出现乱码
相关文章
相关标签/搜索