个人作业1

1.(1)根据需求设计软件时,一定要使设计出的软件满足所有需求吗?还是在设计时也可以加入自己的规则,对不满足的规则进行屏蔽?

 (2)什么样的团队开发模式是比较有效率的?

   (3)作为一个合格的PM所需的几种能力,根据重要程度的排名是什么?

   (4)如何权衡开发成本和收益之间的关系?

   (5)如果编写的软件不能让用户满意,有几种方法可以处理?

   (6)极限编程的利弊分别是什么?

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

软件:第一个写软件的人是Ada(AugustaAdaLovelace),在1860年代他尝试为Babbage(Charles

Babbage)的机械式计算机写软件。尽管失败了,但他将永远载入计算机发展的史册。1950年代,软件伴随着第一台电子计算机的问世诞生了。以写软件为职业的人也开始出现,他们多是经过训练的数学家和电子工程师。

软件工程:1960年代到1970年代,软件需求日趋复杂,维护的难度越来越大,开发成本令人吃惊的高,开发人员的开发技术不适应规模大、结构复杂的软件开发,失败的项目越来越多。从1970年代至今,为软件工程时代,是工程化的生产方式。IBM360操作系统的历史教训已成为软件开发项目中的典型事例被记入史册。由于软件危机的产生,迫使人们不得不研究、改变软件开发的技术手段和管理方法。从此软件生产进入软件工程时代。1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(Softwarecrisis)这个名词。同时,讨论和制定摆脱“软件危机”的对策。在那次会议上第一次提出了软件工程。

3.代码版本管理软件

(1)VSS

VSS 采用标准的 windows 操作界面,只要对微软的产品熟悉,就能很快上手。 VSS 的安装和配置非常简单,对于该产品,不需要外部的培训(可以为公司省去一笔不菲的费用)。只要参考微软完备的随机文档,就可以很快的用到实际的工程当中。VSS 的配置管理的功能比较基本,提供文件的版本跟踪功能,对于 build 和基线的管理, VSS 的打标签的功能可以提供支持。 VSS 提供 share (共享 ) 、 branch( 分支)和合并( merge) 的功能,对于团队的开发进行支持。 VSS 不提供对流程的管理功能,如对变更的流程进行控制。 VSS 不能提供对异地团队开发的支持。此外 VSS 只能在 windows 平台上运行,不能运行在其他操作系统上。VSS 的安全性不高,对于 VSS 的用户,可以在文件夹上设置不可读,可读,可读 / 写 , 可完全控制四级权限。但由于 VSS 的文件夹是要完全共享给用户后,用户才能进入,所以用户对 VSS 的文件夹都可以删除。这一点也是 VSS 的一个比较大的缺点。VSS 没有采用对许可证进行收费的方式,只要安装了 VSS ,对用户的数目是没有限制的。

(2)Git

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。

优点:适合分布式开发,强调个体。公共服务器压力和数据量都不会太大。速度快、灵活。任意两个开发者之间可以很容易的解决冲突。离线工作。
缺点:每个clone都必须包含完整的目录树和完整的历史,否则不能跟踪原始仓库的进一步变化。具体来说,
  (1) 很难直接跟踪git仓库的某个子目录:必须clone整个仓库然后做subtree merge。而SVN则可以直接checkout/update某个子目录。
  (2) 每个版本之间变化都非常大时不适用git。比如说可以用svn去管理binary release的各个版本,客户端可以选择checkout哪个branch或者tag;但如果用git,就得先全clone到本地,这就疯了。

(3)Mercurial

Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。其是基于 GNU General Public License (GPL) 授权的开源项目。

相对于传统的版本控制,具有如下优点:
更轻松的管理。传统的版本控制系统使用集中式的 repository,一些和 repository相关的管理就只能由管理员一个人进行。由于采用了分布式的模型,Mercurial 中就没有这样的困扰,每个用户管理自己的 repository,管理员只需协调同步这些repository。 更健壮的系统。分布式系统比集中式的单服务器系统更健壮,单服务器系统一旦服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而受到影响。 对网络的依赖性更低。由于同步可以放在任意时刻进行,Mercurial 甚至可以离线进行管理,只需在有网络连接时同步。
(4)Bitbucket
BitBucket 是一家源代码托管网站,采用Mercurial和Git作为分布式版本控制系统,同时提供商业计划和免费账户。
特点:无限制的私有仓库个数;无限制的磁盘空间;同时支持https/ssh;Bug 跟踪;项目Wiki;API 支持;灵活的权限控制;可自定义域名;RSS 修改记录输出;自定义下载
posted on 2015-09-22 23:06  EricCast7  阅读(149)  评论(3编辑  收藏  举报