第一次阅读作业

第一次阅读作业

=======================================================================================

1、快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。

  (1)如何衡量一个bug是需要解决的问题,还是可以允许的存在?应该怎么确定这个标准?对于不同的项目,怎样才能称为足够好?

是虫子(Bug),还是肉芽?不同的人有不同的答案。软件行业也有一句著名的笑话:这不是缺陷,这是一个功能(It’s not a bug, it's a feature)!很多人认为有Bug就是质量不合格,没有Bug就是质量完美,其实这也未必。移山软件学院的小芳同学穿了一条新的牛仔裤,她的同学在大街上看到很多不同品牌的汽车,这些汽车出厂时都通过了行业的质量标准。但是你问路人哪些车的“质量好”,很多人会告诉你有些车的质量大大好于另外一些车,那为什么还有人买那些质量“不够好”的汽车呢?对于某些顾客来说,某一类的汽车满足了他们的需求,他们就会买。如果销售人员向不合适的目标用户推销自己公司的汽车,最后销量未必理想。

  (2)怎样的单元测试能够最大地确保程序的正确性?单元测试可能覆盖所有会出现的情况吗?

e.其他与外部条件相关的问题(例如与设备、网络、执行环境相关的问题)。我们在第1章提到飞机被炸开一个洞,你觉得飞机的程序应该考虑“覆盖”这种情况吗?

  (3)如何避免在软件开发过程中的思维误区?怎样少走弯路?

分析麻痹:一种极端的情况是想弄清楚所有细节、所有依赖关系之后再动手,心理上过于悲观,不想修复问题,出了问题都赖在相关问题上。
......
不分主次,想解决所有依赖问题:另一种极端是过于积极,想马上动手修复所有主要和次要的依赖问题,然后就可以“完美地”达成最初设定的目标,而不是根据现有条件找到一个“足够好”的方案,
......
过早优化:......一个工程师在写程序的时候,经常容易在某一个局部问题上陷进去,花大量时间对其进行优化,五十这个模块对全局的重要性,甚至还不知道这个“全局”是怎么样的。
......

  (4)结对编程对于水平不同的搭档该如何合理地分配工作?我属于基本功不是很好的类型,目前也在积极地学习,但是还是和其他同学有差距。我希望能从结对编程中多写代码,多学习技巧和知识,而希望搭档可以更多地指导指导我。虽然说地位平等,但我更多的抱着学习的态度。

  (5)创新需要到达什么样的高度?怎样才能对于可创新的领域保持敏感?是不是没有固定的方法?


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

  最早在工程背景下出版的术语“software”是由Richard R. Carhart在Rand Corporatio研究备忘录中于1953年8月出版的。Paul Niquette声称他最初在1953年10月创造了“software”这个词,尽管他找不到支持他的主张的任何文件。Margaret Heafield Hamilton(1936年8月17日出生)是美国计算机科学家,系统工程师和企业主。她创造了“软件工程”这个术语。


3、【附加题】:大家知道了软件和软件工程的起源,请问软件工程发展的过程中有什么你觉得有趣的冷知识和故事?

    海蒂·拉玛(HedyLamarr),曾被称为“世界上最美丽的女人”。18岁的时候在电影《神魂颠倒》担当女主角。她又是一位女发明家,她与别人合作发明的“扩频通信技术”,被广泛用于今天的手机、卫星通讯和无线互联网,她因而被后世尊为“CDMA之母”。直到83岁高龄,当以CDMA为基础的通信技术开始走入大众生活,美国电子前沿基金会才授予了海蒂·拉玛早应得到的荣誉。

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

  (图片来自维基百科

  • Git
    • 优点:
      • 可用性好,十分方便;
      • 用户多,项目多,利于交流学习;
      • 有自己的十分强的功能。
    • 缺点: 
      • 资料少;
      • 学习周期相对而言较长;
      • 代码保密性差。 
  • Mercuria
    • 优点:
      • 照顾命令行用户,大多数命令都有双字母的简称,效率更高;
      • 照顾SVN的迁移用户,命令上大多数都继承自SVN,使得用户更加习惯;
      • 基于Python,服务器配置相对于Git更加容易。
    • 缺点:
      • Mercurial的branch管理和Git相比不方便,branch出来就删不掉。
  • Bitbucket
    • 优点:
      • 拥有免费私有库,支持git
    • 缺点:
      • 不容易找到项目;
      • 社区活跃度不是那么大。
  • Trac
    • 优点:
      • 有良好的扩充性;
      • 权限体系的设计比较完备;
      • 灵活可定制。
    • 缺点:
      • 不支持多项目;
      • 需求和缺陷没有分离;
      • 中文化不完整。
  • Bugzilla
    • 优点: 
      • 定制功能很强;
      • 对语言的支持很强;
      • 免费,响应速度较快 。
    • 缺点:
      • UI设计差。

posted on 2019-03-05 18:02  swoip  阅读(192)  评论(1编辑  收藏  举报