[2017BUAA软工]第1次个人作业

软工第1次个人作业


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

1、文中提到“积累问题领域的知识和经验(例如:对医疗或金融行业的了解)。”然而我们如何定位自己问题的领域呢?对于现在的我们是不是应该多看看其他行业的知识呢?

2、在文中作者说:“MSF提倡自下而上的计划,每个人有充分的权力估计并决定自己的任务需要多长时间,而不是上级交给的时间,这意味着让真正做这件事的人按照自己的估计去完成任务。”对于这一点,我有疑问,如果像MSF这样充分授权,又能怎样保证所有人能正确的估计时间,不会偷懒也不会使得自己任务过重呢?据我了解,对于平时作业来说都有一个ddl,如果像MFS所说的充分授权,就有可能有些人不会去完成这些作业,我认为还是得有一定的控制。

3、文中作者提到“投资要讲时机,比如说对于某项技术的培训,最好的做法是在即将需要的时候进行培训。太超前或滞后都不灵。”,如何恒定即将需要这个范围,对于我们的学习来说,这些知识我们不一定能够立马用到,所以说安排的课程是不好的时机么?

4、文中作者提到“问: 如果我要做一件事情,但是周围的人有不少不同意见,短时间又不能完全说服他们,怎么办? 答: 对此事负责任的角色要自己拿主意。”,确实对于一件事情,自己需要负责任,但是有的时候确实是大家都反对有可能是自己不对,这个时候如何能很好的权衡呢?同样,站在旁观者的角度,提出建议是出于帮助的想法,如果会扰乱到主事的人思考,那是不是不提会更好点?

5、文中提到了很多测试的方法,正如书中所说,软件开发有周期,而对于在每一个阶段,我们应该如何权衡测试的比重呢?

6、“但是在现实中,好的主意不一定赢。”作者还通过键盘的例子和衡量制度的例子加以佐证,但我不这样认为,对于键盘而言,人们只是按照习惯使用了QWERTY键盘,然而只是因为历史习惯,不意味着不能改变,倘若在很大范围内推广Dvorak键盘,从长远的角度来说,也不一定会不流行,何况基本所有创新的东西都要一个周期,在早期一般不太容易让人接受,因为人们已经习惯了以前的方式,但随着时间的推移,好的东西会显现出来。

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

  • “软件”是由1935年图灵在一篇题目为“omputable numbers with an application to the Entscheidungsproblem (decision problem)”的论文中提出的
  • “软件工程”是1968 年北大西洋公约组织在前联邦德国开会提出的

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

1952年,适逢美国大选。为了对选举资料进行处理,哥伦比亚广播公司租用了UNIVAC,用来预测大选结果。选举结束后仅仅45分钟,UNIVAC就计算出艾森豪威尔将以438票的绝对优势赢得胜利。但在选举前,几乎所有的专家和媒体都预测竞选双方势均力敌。所以对于计算机的预测结果,广播公司拒绝报道。工程师们只好重新计算,但该计算机仍坚持艾森豪威尔将大获全胜。当选举结果正式揭晓后,所有的人都惊呆了:艾森豪威尔实际得票为442票,UNIVAC的预测只有不到1%的误差率!从此,整个世界开始对电子计算机的功能有了新的认识,电子计算机的发展进入了一个新时代。

三、上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? (提示:搜索一下Microsoft TFS、Git、Mercurial、GitHub、Bitbucket、Trac、Bugzilla、Rationale,Apple XCode)?

  • Microsoft TFS
    • 优点
      • 集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM
      • 能与 VS 无缝接合
      • 是对敏捷,msf,cmmi等项目、过程管理、过程改善的支持
    • 缺点
      • 能应用起来的团队、公司的数量极少
      • 用浏览器访问慢,从 IE *问、填写各种开发、测试记录慢
  • Git
    • 优点
      • 分支能力特别强大
      • 支持离线提交,分布式推送拉取,使得代码层面的协作相当流畅
      • 免费、开源的
      • 对程序源代码进行差异化的版本管理,代码库占极少的空间
    • 缺点
      • 图形界面支持差
      • 不支持中文
      • 使用难度大
  • Mercurial
    • 优点
      • 命令行简单、容易上手
      • 有revset,扩展性,append only的存储结构
      • 服务器部署相对容易
      • 跨平台、封装好
    • 缺点
      • 分支管理不灵活
      • 支持社区略差
  • GitHub
    • 优点
      • 基于web
      • 提供Git存储库服务,允许你使用Git的源代码管理功能
      • 功能设计简洁实用上手很快
      • github Markdown支援很好
      • 开源项目多
      • 支持多人共同完成一个项目
      • 代码不需要保存在本地或者服务器
    • 缺点
      • 免费套餐不支持私有项目
      • GUI需要时间来适应
  • Bitbucket
    • 优点
      • 支持私有免费项目
      • 支持Hg,支持Git
      • 完全免费的闭源项目,支持5人以内的合作开发
    • 缺点
      • 网页端的git仓库不如github好用
      • 搜索界面简单
  • Trac
    • 优点
      • 非常灵活
      • 可以和SVN集成
      • 有良好的扩充性
      • 权限体系是比较完备
    • 缺点
      • 功能不是很强大
      • 不支持多项目
      • 需求和缺陷没有分离
      • 不显示中文名,本地化做得很差
      • 核心功能很少,不安装插件基本上没法用
  • Bugzilla
    • 优点
      • 免费
      • 有中文版支持
      • 强大的检索功能
      • 强大的后端数据库支持
      • 丰富多样的配置设定
    • 缺点
      • 快速搜索结果不准确
      • 只能管理缺陷
      • 界面不够友好
      • 汉化版容易出现乱码
  • Apple XCode
    • 优点
      • 编译速度极快
      • 自动提供撤消、重做和保存功能
      • 可以自动创建分类图表
      • 无需编写任何编码
      • 便捷的代码管理器
    • 缺点
      • 只为iOS和Mac开发而设计
      • 更新版本后,某个插件可能会失效
上一篇:多线程(四) 实现线程范围内模块之间共享数据及线程间数据独立(Map集合)


下一篇:jQuery速看