《构建之法》问题git
1.软件工程是一个在不断发展的方法学,随着时间在不断变化。那么咱们如今学习的方法是否会被替代?若是会,缘由是什么?github
2.书中写,团队须要有明确的分工。可是对于咱们这样的小团队,甚至是更小的团队,没法作到平均的分工,是否还应该有按照职责的明确的分工?web
3.既然短时间刺激和长期影响并统一,那么在开发时怎样衡量和评估软件的前景?windows
4.为提高用户的第一印象,不少软件选择减小开启界面的复杂度,可是这样会掩盖不少软件的功能和特色。对于这一矛盾应如何抉择?服务器
5.敏捷开发中,尽早持续交付是一个基本原则,而十五章又讲须要渐进发布,这两者应该分别用于什么场景?并发
6.若是开发过程当中,用户的需求出现了较大变化,应选择重构代码,仍是在现有基础上修改?分布式
7.书中对绩效的评定方式阐述的很含糊,没有给出一个能够量化的方式。在现实中绩效是如何考察的?svn
软件与软件工程的发明:学习
软件:最先的软件概念由Richard R. Carhart在1953年8月提出,使用于工程背景。真正电子上的软件由John Tukey于1958年提出于"The Teaching of Concrete Mathematics",并发表在JSTOR。测试
软件工程:由Margaret Hamilton于开发阿波罗11号软件系统期间发明。当时的软件开发处于起步阶段,没有工程化的方法,在开发大型程序时阻力很大。Hamilton为了让软件得到拥有的尊重,开创了软件的科学——软件工程。
项目管理软件对比
Git:git是一款免费的、开源的、分布式的版本控制系统。git采用了分布式版本库的方式,没必要服务器端软件支持,使源代码的发布和交流极其方便。每个git克隆都是一个完整的文件库,含有所有历史记录和修订追踪能力。其最大特点就是“分支”及“合并”操做快速、简便。支持离线工做,git是整个项目范围的原子提交,并且git中的每一个工做树都包含一个具备完整项目历史的仓库。
Github: github是一个基于git的代码托管平台,提供了web管理页面,在windows上也提供了客户端。用户可议在github上托管项目,可是目前免费的托管都不能设置为私有。
Svn:SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上不少版本控制服务已从CVS迁移到Subversion。与git相比,svn不是分布式的,全部信息按文件存储,处理分支较为复杂,有全局的版本号,内容的完整性略差。
TFS:TFS是微软提供的一项服务,已经被集成在Visual Studio中。TFS不只提供了版本管理的功能,还提供工做项追踪、自动化生成等功能。针对5人如下的校开发团队,提供免费版。
Xcode:Xcode是Apple提供的集成开发环境,可议选择使用git或者svn做为版本控制。
Mercurial:Mercurial是使用Python开发的轻量级开源的分布式版本控制系统。每一个用户管理本身的 repository,管理员只需协调同步这些repository。
BitBucket:BitBucket是一家源代码托管网站,采用Mercurial和Git做为分布式版本控制系统,同时提供商业计划和免费帐户。BitBucket提供了很是丰富的功能,如无限的私有仓库和硬盘、Bug追踪、API支持、自定义域名等。
Bugzilla:Bugzilla是一个开源的缺陷跟踪系统。
Trac:是一个为软件开发项目须要而集成了Wiki和问题跟踪管理系统的应用平台,是一个开源软件应用。Trac以简单的方式创建了一个软件项目管理的Web应用,以帮助开发人员更好地写出高质量的软件;Trac应用力求不影响现有团队的开发过程。
Rational:IBM软件开发平台的一部分,包括生命周期管理、统一建模语言、功能测试和回归测试等多个组成部分。