微软公司的Team Foundation Server是个强大的项目管理工具,如果用.NET开发,它应该是首选的项目管理平台。TFS的成本比较高,而且和Visual Studio集成紧密。比如TSF有些功能必需和Visual Studio配合才行,比如新建项目,必须在Visual Studio中完成。TFS必须要用SQL Server作为数据存放平台。这样导致运行TFS必须对微软的这几个产品都要购买许可,费用相当贵。 Team Foundation Sever另一个不好的方面是对硬件的消耗相当高,4G内存跑起来都有些吃力,再和微软的SharePoint组合起来,一般的公司都承受不了这样的成本,且不说软件费用,仅仅是硬件方面都难达到要求。

言归正转,项目管理一般涉及到源代码版本控制和需求管理。多人团队开发时,用源代码管理可以节省很多代码冲突时的合并时间,如果再能配合一个需求管理工具,把代码中的每一种修改关联到需求记录中去,这样就很完美了。TFS中令我相当着迷的地方就是Changeset变更集可以直接链接到需求记录(Bug或Enhancement)。每个Bug后面都有Link选项,以此作为关联,在以后查找问题原因时带来很多便利。

没有金刚钻,小米加步枪也可以漂亮的干活,来看我是如何组合这三个工具以搭建项目开发环境。

源代码管理 安装好Visual Source Safe 2005,这是此软件最后一个版本,简单方便稳定。就是自己独立做项目也经常用它,可以记录每次对代码的变更,在维护阶段会节省大量时间。

需求管理 选用BugTracker.NET,其它的第三方的免费的或是商用的工具找了很多。主要考虑的方面是简单,硬件消耗低,可维护,稳定。非.NET开发的需求工具一率不用,原因是用.NET开发的系统,自己查找原因和维护起来方便。Ruby,PHP,JSP技术只简单的了解,要是用这些技术写的需求工具出了问题,又要折腾的去学这些技术查找原因。已经30+程序员了,不喜欢折腾,不喜欢玩技术,喜欢用简单的方法把目的达到。

硬件消耗低,动不动就几百MB的东西,看起来比较吓人,维护起来肯定不容易。最好是开源的系统,以后能写一些扩展或是代码对它进行扩充。最后,要稳定,不能一装上去就报N个错误。需求管理工具一般都是B/S架构的,ASP.NET写的最好,自己以前是ASP.NET程序员出身,可以解决维护难题。能有个Visual Studio AddIn或是C/S的更方便,实在找不到,自己看数据库表结构也可以写一个。鉴于这些原因,最终选BugTracker.NET。

第三,我还想把代码中的变更直接Link到需求管理工具中。每一个需求,都会对代码进行相应的变更,为了追踪方便,我想代码中的各地方的修改,直接关联到需求工具中。经过搜索,Whole Tomato Software出品的SourceLinks满足我的需求。Whole Tomato Software是大名鼎鼎的Visual Assist X工具的开发商,VC++程序员必备工具之一。

SourceLinks是免费工具工具,设计原理也比较简单。可以从以下地址获取它:

http://www.wholetomato.com/products/sourcelinks/default2.asp

源代码中用固定的格式的字符串标识代码修改的原因,比如case 45192,Source Links会扫描源代码文件,识别此字符串,当点击case 45192时,可以跳到浏览器中类似于这样的地址http://localhost/btnet/edit_bug.aspx?id=45192,查看需求明细内容。另外,还可以做鼠标旋停插件,如上图所示,它显示了case 45192的详细信息。

为达到此目的,需要对Bug Tracker.NET进行简单的修改,改成自动登陆模式或是改成域用户验证方面,以避免跳转到需求明细时,要求输入用户名和密码。从下载回来的Bug Tracker.NET文件包中,进入www目录,找到default.aspx文件,直接在用户名和密码的控件的地方,输入控件值,默认的用户名和密码均是admin。跳到108行,加入代码on_logon();即可。

<td class=lbl>User:</td>
	<td><input runat="server" type=text class=txt id="user" value="admin"></td>
	</tr>

	<tr>
	<td class=lbl>Password:</td>
	<td><input runat="server" type=password class=txt id="pw" value="admin"></td>
	</tr>
 
 

最新文章

  1. 超大 Cookie 拒绝服务攻击
  2. 背水一战 Windows 10 (17) - 动画: ThemeTransition(过渡效果)
  3. 如何删除NSDictionary或NSArray中的NSNull
  4. 带锁的3D切割轮播图
  5. WCF服务显示的是服务器名称而不是IP地址...
  6. 字符串匹配--Karp-Rabin算法
  7. 将对象转为数组方法:延伸array_map函数在PHP类中调用内部方法
  8. &lt;转载&gt;NPOI Excel 单元格背景颜色对照表
  9. Java 复制文件的高效方法
  10. 简单的表视图UITableView
  11. 大型JavaScript应用程序架构模式
  12. Ionic简介和环境安装
  13. Android ContentProvider和getContentResolver
  14. How do I create an IIS application and application pool using InnoSetup script
  15. 2016GIAC全球互联网架构大会日程分享
  16. web项目的集成测试:模拟点击
  17. angular路由操作中&#39;#&#39;字符的解决办法
  18. RTMPdump(libRTMP) 源代码分析 8: 发送消息(Message)
  19. 20165309 《网络对抗技术》实验一:PC平台逆向破解
  20. 远程过程调用发展历程 WebAPI GRPC Hprose

热门文章

  1. Cobbler学习之一--Fedora17下配置Cobbler安装环境
  2. jackson报错 无法解析,但是json一切正常
  3. RHEL6.5及Win7的和谐共处(投机版)
  4. android wifi P2P CONNECT, INVITE和JOIN流程选择
  5. 安卓Notification的setLatestEventInfo is undefined出错不存在的解决
  6. Replication的犄角旮旯(一)--变更订阅端表名的应用场景
  7. MongoDB分片之数据分割方式
  8. 文件系统权限引起IIS站点总跳登录页面
  9. 使用XtraReport的CalculatedFiled(计算字段)实现RDLC报表中表达式
  10. dijit样式定制之TextBox(一)