个人博客作业Week1
一.遇到的问题
1.什么样的团队开发模式是比较有效率的?
2.软件行业的核心竞争力究竟是什么?
3.极限编程的利弊是什么?
4.怎么样的一个软件才是一个好的软件?
5.开发、测试由不同的人担任真的合适吗?
二.软件和软件工程的提出
软件:在1860年代,Ada(AugustaAdaLovelace),第一次尝试为Babbage(Charles Babbage)的机械式计算机写软件。
软件工程:1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(Softwarecrisis)这个名词。同时,讨论和制定摆脱“软件危机”的对策。在那次会议上第一次提出了软件工程。
三.项目管理软件
(1) Microsoft TFS
优点:和VisualStudio集成得最好,本身的功能非常强大,并不单单是个源码管理,不过个人用起来一般也就主要用其源码管理功能。
(2)Git
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。
优点:适合分布式开发,强调个体。公共服务器压力和数据量都不会太大。速度快、灵活。任意两个开发者之间可以很容易的解决冲突。离线工作。
缺点:资料少(起码中文资料很少)。学习周期相对而言比较长。不符合常规思维。代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
(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 修改记录输出;自定义下载