本文转自http://www.suneca.com
一直想写一篇这样的总结性文章,但不是没有时间就是没有勇气写下去,由于怕别人丢臭鸡蛋。这两天有时间,终于鼓起勇气,将这篇文章写来下!也但愿对一些正在寻找更好发展的朋友能有点帮助,也但愿对于一些技术跟管理方面的牛人,能给予一些建议。
做为一名项目经理、系统架构师或技术骨干,其水平如何,关系到公司的项目管理、软件质量管理等方面的问题。项目经理或技术骨干应该要起带头做用,使整个团队的开发及管理能达到一种更高的水平。
那 做为一名项目经理或公司技术骨干应该学会那些工具及知识点呢?涉及到这一块的工具及技术点很是多,如何去选择,是摆在项目经理、系统架构师跟技术骨干面前 的问题。根据公司及团队的状况,选择合适的工具或技术框架,这一点很是重要。在项目的不一样阶段,须要有不一样的工具来支持。
按照软件系统的生命周期的六个阶段,通常分为需求分析阶段、系统设计阶段、系统开发阶段、软件测试阶段、系统发布阶段、系统维护阶段,这几个阶段都须要有不一样工具的支持。
1、需求分析阶段:
第1、项目管理及需求管理工具
项 目管理工具不少公司都在使用,为何要使用这些工具?假如没有使用这些工具,而是使用Excel或Word进行记录,那当需求变动?需求实现状况的跟踪? 软件是否能按时交付?将是一件很是烦锁且容易出错的事情。一个软件项目、开发团队可否得到成功,管理很是关键。比较有名的商业化工具备:MicroSoft Project Server及Project 2003、IBM Rational RequisitePro、JIRA、PowerDesinger。比较有名的开源需求管理工具包括:OSRMT(Open Source Requirements Management Tools)、Xplanner、Openworkbench等等。
不少软件公司都会使用SharePoint,在SharePoint平台上,只要你想获得,基本上均可以经过配置方式来知足你的业务需求。在SharePoint上,能够跟MicroSoft Project Server很好的结合,再配置Project 2003为客户端,进行公司的项目管理。也许对Project操做习惯的问题,在Web界面进行项目管理的时候,总以为很不方便。
IBM Rational RequisitePro(http://www.ibm.com )能够算是最骨灰级的一个软件了,假如你公司整个软件生命周期管理都是采用IBM的解决方案,那使用RequisitePro是一个很是好的解决方案。须要这些软件能够到IBM官方网站上去下载一个最新版本,或者在电驴上面下载一些“特别”版本。设计工具、管理工具的完美结合,这个正是IBM Rational RequisitePro的强项。RequisitePro跟Offce结合得也是很是完美。
JIRA(http://www.atlassian.com )原来只是一个缺陷跟踪系统,你能够在JIRA上面建立新的ISSUE,当ISSUE分配给某个程序员时,系统会自动发送一封邮件给该程序员,提示有新的BUG。JIRA也有提供一个Eclipse插件,你能够在Eclipse上面,查到属于本身的ISSUE,并快速解决。如今JIRA也能够用来作项目管理,在操做方面很是人性化,我的一直很是喜欢使用JIRA来进行项目管理、缺陷管理,再结合Eclipse,简直就是完美!但做为商业的软件,价格也很是贵,互联网上也有不少Crack,你们有兴趣也能够搜一下。
OSRMT(http://sourceforge.net/projects/osrmt )是一个开源的需求管理工具,分为客户端跟服务器,也提供了一个安装界面供用户安装,作开源的已经算是作得很是完美了。当前最新版本是V1.5,有兴趣的朋友能够下载一个最新版本玩一下,操做还算是挺人性化的。
Xplanner(http://www.xplanner.org )是一个开源的,基于XP编程的项目管理软件,它能够帮咱们生成一些统计图表。这个软件从06年末发布0.7b7版后,就再也没有更新过了,我对开源工具的见解就是:版本号没有超过1.0版,我都不会应用于生产!对于Xplanner,也是停留在试用的阶段。
Openworkbench(http://www.openworkbench.org ) 也是一个开源的项目管理软件,其功能跟Project 2003类似,是一个值得你们去使用的一个工具,但对于中国不少软件公司,都是使用特别版的Project 2003。假如你很尊重版权,又不想使用Project 2003,那Openworkbench是一个很是好的选择。
第2、需求分析工具
需求分析工具用得比较多可能就是Rational Rose、MicroSoft Visio或MindManager,通常咱们使用Rational Rose来进行用例分析,画用例图,画状态图;使用MicroSoft Visio来画出应用系统的结构图、流程图等。固然,对于MicroSoft Visio能画出来的东西,其实Rose也同样能够实现,只是,你们都是这么干,咱们也没有必要专门去作一些特例的东西,特别是对于一些比较特殊的公司及行业。
Ration Rose 2003是 一个值得怀念的工具,至今仍是有不少公司跟我的都是使用,我的以为这个软件版本算是最经典的一个,但对于如今所见即所得的要求下,使用Rose 2003,可能没有办法知足你,由于它须要通过一些小操做才能知足你的要求。但不能否认,它是一个很是优秀的软件。如今对于一些喜欢使用新工具新技术的程 序员,也许如今他们正在使用RSA。
MicroSoft Visio(http://www.microsoft.com )是每一个搞设计的人都会用的一个工具,咱们通常使用Visio来画系统结构图、关键流程图、系统部署结构图等。MicroSoft Visio也提供了UML的功能,能够用它来画用例图、类图、状态图,时序图等,但通常这个功能不多使用。至少我基本上不用。
MindManager(http://www.mindjet.com ) 是一个很是好用的工具,咱们用来描述咱们的思惟,不少人都不喜欢经过软件来描述,而是经过一张纸,而后在上面进行涂鸦,接着跟客户或团队进行思惟沟通。 MindManager很好地解决了这个问题。MindManager跟Office结合得很是完美,能够生成Word、Excel、PDF等文件。这个 工具是我一直在使用的一个软件,很是好用。最新版本为7,你们有兴趣能够下载一个试用一下,也能够在网搜搜索一些“特别”版本。
2、系统设计阶段:
第1、系统设计工具
主 流的系统设计工具备你们很是熟悉的Rose2003,不过,如今已经不叫Rose了,如今IBM最新的设计工具是RSA(Ration Software Architect),Borland Together,SyBase PowerDesinger,MicroSoft Visio,对于开源的系统设计工具也有不少,好比ArgoUML、DBDesigner等等。
RSA(http://www.ibm.com ):IBM 最新的设计工具,它是一个基于Eclipse平台的一个工具,对于你使用RSA,那也许你会将你的整个团队的工具都采用IBM的整套解决方案,使用 RequisitePro来进行需求管理、使用RSA来进行建模、使用ClearCase来进行配置管理、使用ClearQuest来进行缺陷跟踪、使用 RFT(Rational Functional Tester)来进行测试……RSA有一个最大的优势,那就是跟Word结合得很是好。这一点能够确定。
Together(http://www.borland.com ):Borland 公司的NB的设计工具,Together 2006版本也是一个基于Eclipse平台的软件,功能也是很是强大,其所见所得的功能,是我很是喜欢它的一个缘由。还有一个缘由就是基于 Eclipse平台,这个能够跟个人开发工具很完美地整合在一块儿。不过,整合要注意一个问题,那就是Eclipse兼容性问题,这一点是很是烦人的。
PowerDesigner(http://www.sybase.com ): PowerDesigner是“一站式”建模与设计解决方案,物理数据模型的数据库平台无关性,所见即所得,反向工程,报表生成等等功能,使得它成为数据 库设计人员心目中最好的产品,它的易用性深深地吸引了我!特别它的Repository模型库的功能,更让咱们实现了模型设计的版本控制。最新的 PowerDesigner,使得我以为它是一件艺术品。作设计的人员通常会使用PowerDesigner来进行数据库物理模型设计,它是我心目中的首 选工具。以前曾经对比过RSA、Together、ERWin的数据库模型设置工具,最终我仍是更加喜欢使用PowerDesigner,也许,个人操做 习惯已经被PowerDesigner腐蚀。
第2、开发的技术框架
技术框架的选择是很是关键,一个好的技术框架,可让咱们的开发更加快速、团队的分工更加合理、系统可以支持多种数据库平台、咱们的维护更加方便。
Web前端MVC框架是Struts 2。Struts 2能够说是Struts穿上了WebWork的外衣,其内核大部分都是采用了WebWork的技术,而且基于AOP的设计思想,让咱们在软件设计上的可以更加多地体现“高内聚,低耦合”的设计思想。
J2EE框架是Spring,做为一个开源的J2EE框架,虽然它没有太多的新技术点,但它的整合性,拿得咱们的开发更加简单,IOC、AOP、事务处理、开源框架的整合支持等等,使得做为一个J2EE框架的首选。
持久层框架是Hibernate, 做为一个开源的项目,我想,没有一个开源项目的社区可以你Hibernate同样,丰富的文档,活跃的社区,基于Hibernate的开发团队的庞大,使 得它做为持久层框架的首先。基于 Hibernate,咱们能够开发出数据库平台无关性的产品。可是,Hibernate也有自身的问题,假如使用不当,也许会有所失控,一旦失控,它所带 来的,就是性能问题。对于最新的Hibernate3,存储过程的支持,外部SQL的定制,很好地解决了这个问题。但在关联关系上,使用仍是要当心为好。
页面框架,能够多考虑使用DIV技术、JSTL标签库、Struts 2标签库、DWR、AJAX、XML+XSLT等技术来让咱们页面更好维护,使用OSCache缓存技术来提升咱们页面的访问速度。
第3、开发规范的定制
文件命名规范、数据库设计规范、编码规范、团队协做规定等等一些规范性的东西,须要在系统开发前就规定好,而且作相应的培训。QA也要作好监督的做用,按期作评审工做,对已发生的问题及可能出现的问题,及早发现,及早处理。
第4、开发工具的选择
团 队必定要选择一样的开发工具,开发工具相同,软件版本相同。为何要这样子作,其实假如你做为一个Team Leader,你会在管理你的团队的时候发现不少问题,而解决这个问题,那在项目编码前,就把什么东西都规定好,以避免其中发生问题,影响整个团队的开发速 度。开发工具的选择也是很是重要的,目前企业用得比较多的开发工具备:Eclipse、Jbuilder、NetBeans、IDEA。
Jbuilder: 最新的Jbuilder版本是2007,2007版基本上能够算是从新开发的版本,由于它是基于Eclipse之上的。我算是Borland公司最为忠实 的Fans啦,从Jbuilder6,到Jbuilder7,再到Jbuilder8,再到Jbuilder九、Jbuilder X,Jbuilder 2005,Jbuilder 2006,我常常跟我学生说,对于Jbuilder,相信没有人比我更熟悉他了,作Java开发接近6年时间,超过4年的时间,天天都都在使用的工 具,Jbuilder见证了个人长成。使用过Jbuilder的人不少人知道一点,就是Jbuilder的盗版问题,安装完Jbuilder以后,假如你 一个不当心,没有安装防火墙,那Jbuilder会不时经过8888端口向Borland总部发送一些你的计算机信息,这个是一种很是可怕的“木马”,什 么是“木马”?这个就是!这种状况自从Jbuilder X之后就一直有。假如你不怕Borland公司的人跟工商局过来查你公司的软件的话,那选择Jbuilder是一个不错的选择。做为Java IDE开发平台的老大,Jbuilder在企业应用开发是很是有优点的,特别是开发EJB跟WebService,偶只能用一个句来形容,那就是牛。 Jbuilder 2007,王者归来,相信对于不少Borland的Fans,仍是很是喜欢并乐意去尝试的,不过,价格仍是会让不少公司都受不了、速度会让不少程序员也受 不了。个人Jbuilder的缘分到2006就基本上已经结束了。如今个人开发环境基本上都是Eclipse。
Eclipse:IBM捐出来的好东西,发展挺快的,如今已经到了Eclipse3.3,很是好用的一个工具。但Eclipse只是一个基础平台,假如你须要其余的功能,那你须要下载相关的插件进行扩展,下载的插件要注意一下跟Eclipse平台的兼容性问题。Eclipse+MyEclipse(http://www.myeclipseide.com )是个是不少WEB开发人员都是在采用的一个整合工具,但MyEclipse要钱,若是公司愿意为此支付29.9美圆的话,那它是一个很是好的选择;比MyEclipse更上一个档次的还有Exadel(http://www.exadel.com/web/portal/home),不过,价格贵得离谱,由于它自己就是一家咨询服务公司作出来,主要仍是靠咨询服务,培训挣钱,而且,运行时的不稳定,也让我放弃了选择这个插件做为个人开发工具,虽然这个工具真的是很强大。Eclipse+WTP(http://www.eclipse.org )也是一个很是好的免费的开发工具,从eclipse官方网站上能够下载WTP跟Eclipse整合在一块儿的工具,如今教学基本上用这个。Lomboz(http://lomboz.objectweb.org/ ) 也是一个很是好用的免费J2EE插件,学生用的不少,由于好像有很多书都是用这个进行教学的。经过插件来的扩展原本是一件好事,但当它的版本问题?兼容性 问题?安全性问题?语言问题?出现的时候,你就会骂着,为何不提供一站式开发平台呢?若是你下载了语言包,你会发现,有些地方是中文的,有些地方是英文 的,极其丑陋!也许,Eclipse做为一个基础平台,它确实是太基础了。但如今,咱们也能够下载一些All-In-One版本的Eclipse,但我的 感受仍是不够,不少功能,咱们还须要去找插件来进行扩展。也许,Eclipse的决策者认为,做为基础平台,确定是越简单越好,须要什么就加什么,这样, 资源占用会更少。正如东方标准最咨深的平面老师曾宇飞讲过一句话:你会去麦当劳点酸菜鱼吃吗?
NetBeans: 做为Sun公司出品的开发工具,功能同样也是很是强大,无论你是作应用程序开发仍是作应用系统开发,NetBeans都是一个不错的选择。 NetBeans也跟Eclispe同样,也是一个基础平台,但这个基础平台作得比Eclipse强大不少,基本上你下载一个NetBeans就能够开发 应用程序或J2EE应用系统了。而且,NetBeans的中文支持很是好,基本上一个新版本出来,就已经有中文版、英文版跟日语版了。看 来,NetBeans的决策者仍是比较看好这些人群的。NetBeans的Mobile插件开发J2ME是最快最好用的,至少我我的这么认为。开发 J2ME应用产品,我首选的就是NetBeans。目前NetBeans已经发展到6.0的版本了,界面很是华丽,有兴趣的朋友能够下载一个玩一下。 NetBeans的下载地址是:http://www.netbeans.org 。
IDEA: 对于IDEA的评价,我只能用六个字来形容,那就是:实用的艺术品。它很是好用,界面很是华丽,至关若是你是一个女性的项目经理或技术牛人,你会喜欢上这 件艺术器的。IDEA开发应用程序很是强大,这一点绝对能够确定。官方提供的插件也很是丰富,当你须要那一方面的功能,基本上均可以找获得,找插件,你只 须要在官方插件库里面去找就能够了,而且自动安装,自动更新。做为2003年拿到JavaWorld大将的一个做品,相信,它能够带来不少IDEA的创 新。它是属于商业化的工具,价格也只有499美圆,而我的买也就249美圆,若是你愿意牺牲某些功能,那你彻底能够下载一个免费的版本。价格方面,我的觉 得彻底对得起这件艺术品价值。有兴趣的话能够下载一个试用版玩一下:http://www.jetbrains.com/idea ,小声地说,上一下baidu,插件一下,其实你能够找到不少注册号。
Ant是apache的一个开源项目,能够从Ant官方网站上下载一个最新的版本:http://ant.apache.com 。虽然该项目虽然如今发展变得很是缓慢,但能够很是确定地讲,它是一个好东西。咱们可使用ant来对咱们整个工程进行编译,打包,单元测试,部署等等,基本上你想获得的东西,Ant能够帮你作获得。Maven(http://maven.apache.com ) 是一人比Ant还要强大的工具,如今大有Maven将会代替Ant的趋势,Maven也是项目经理要关注的一个技术点。基本上如今主流的开发工具都提供共 了对Ant的支持,有些甚至是依赖,好比:NetBeans,你在NetBeans当中建立一个新的工程,那系统会自动地建立一个ant的运行脚本程序。 对于你进行编译、打包、发布,那彻底都是依赖于这个ant脚本。咱们可使用Ant来开发一个DailyBuild(微软叫每日产品生成,XP叫持久集 成)的流程,来提升咱们整个团队的软件开发质量。Ant的使用很是简单,多看手册,多花点心思,那你会作得更好。
3、开发阶段
第1、配置管理工具
代码管理工具备不少,如今公司用得比较多的代码管理工具备CVS、VSS、SVN。
对 于一个开发团队只有2-5我的,而且这两三我的是同一间办公室里,那使用VSS是一个很是不错的选择,我的以为他小团队的管理方面很是好用。我的以为 VSS惟一的缺点就是一个文件当被一我的锁定,那其余人就没有办法进行修改了,当一个文件为多我的所共用且开发团队人数较多时,这种问题将会显示很是严 重。VSS客户端跟服务器你均可以从Visio Studio里面找到。
Eclipse的VSS客户端插件:http://vssplugin.sourceforge.net/
对于一个开发团队有超过5我的,那此如选择CVS或SVN将是一个更好的选择,而且,假如你的团队是分散的,可能不在一间办公室或者根本不在同一个城市,那使用CVS或SVN是一个很是更想的选择。CVS的服务器通常是使用CVSNT或CVSServer。
CVSServer:
Linux for X86:http://ftp.gnu.org/non-gnu/cvs/binary/stable/x86-linux/RPMS/i386/
Window for X86:http://ftp.gnu.org/non-gnu/cvs/binary/stable/x86-woe/
CVSNT:http://www.cvsnt.org/
CVSClient:
WinCVS:http://www.wincvs.org
TortoiseCVS:http://www.tortoisecvs.org/
JBuilder、Eclipse、NetBeans、IDEA集成的CVS客户端
做 为版本管理工具,CVS出现至今,已经有二十个年头,能够说他已经走到了尽头,但能够确定,它将继续存在着。SVN是做为CVS的代替产品而出现的。如今 不少开源组织,都慢慢地转到SVN上,好比Apache跟SourceForge。SVN有着比CVS更强大的功能,好比,它可记录目录的更改,它的性能 比CVS会快不少等等。目前SVN慢慢地被企业所接受,但我的以为其Eclipse的客户端的稳定性还有待提升,也许这个跟Eclipse的版本兼容性有 必定关系。但这些不稳定性,让我如今对这个产品的使用还继续停留在试用的阶段。
SVNServer:http://subversion.tigris.org/
SVNClient:
TortoiseSVN :http://tortoisesvn.net/
Eclipse插件:http://subclipse.tigris.org/
目前SVN插件支持包括Eclipse、Jdeveloper、NetBeans等开发工具。
第2、知识库管理工具
团 队每个人在开发的时候都会发现一些问题,最终,有些问题可能没有办法解决,有些问题能够解决。通常状况,大部分问题通过团队成员的共同努力,都是能够解 决的,那解决问题的方法,解决问题的步骤,这些都应该造成知识。做为一个团队的Leader,咱们必须重视这些知识,由于,这些知识很是有用,它对于一些 新手或没有遇到此类问题的同事,可以提供相应的帮助。
Confluence(http://www.atlassian.com/software/confluence ),跟JIRA来自同一家公司的产品,它跟JIRA能够整合得很是好。咱们能够经过JIRA的ISSUE,将该ISSUE上升为一个知识。假如你是使用 JIRA来进行项目管理跟缺陷管理,那使用Confluence是一个最佳选择。
PHPBB(http://www.phpbb.com ), 论坛其实也是一个很是好的知识库管理工具,当某一个工程师遇到一些疑难杂症的时候,最终,经过本身的努力或团队其余同事的努力,终于解决问题了。那做为 Leader的你,应该鼓励他们将这些知识,写一些文章,而后发布在公司本身的BBS上。供你们参考及讨论。这个是一种很好的方法。记得我之前,我在网上 看到一些有用的信息,我就把它保存在我本机的PHPBB上。只可怜,后来电脑被人偷了。贼郁闷。
4、软件测试阶段
第1、缺陷管理工具
软 件你不能保证它永远不会错,只是,有些错误你暂时尚未发现而已;有些错误须要在某些特定的环境下它才会发生。就像Windows,时不时会有一些系统更 新文件要求更新。可能这些更新不是错误,只是一些系统安全方面的隐患。这些均可以算是软件系统的缺陷。那这些缺陷咱们应该怎么进行管理?怎么进行跟踪呢? 如今缺陷管理用得比较多的有两个:第一个是开源的bugzilla,另外一个是商业的JIRA。
Bugzilla(http://www.bugzilla.org ), 做为开源界缺陷管理系统的鼻祖,它发展到如今已从98年到如今经有10的时间了。它的开发语言是Perl,这使得它的安装变得很麻烦,Bugzilla可 以安装在Windows、Linux、Unix等操做系统上。如今的Eclipse也提供了对它的支持,咱们能够在Eclispe平台上,找到应用系统的 BUG,功能作得很是强大。若是安装能更加轻松一点,或者提供一个All-In-One版本,那会更好!
JIRA,做为商为上化的缺陷管理系统,JIRA的价格对得起它的功能。JIRA不仅是一个缺陷管理系统,它更是一个集项目管理、缺陷管理、统计分析为一身的工具。这个工具我一直在使用,只是使用一些“特别”版本而已。
第2、软件性能监测工具
Jprofiler(http://www.ej-technologies.com )是一个很是好的性能监测工具,使用这个工具,你能够快速发现系统那些模块出现性能瓶颈或算法致使的性能问题;它还能够分析内存泄漏的问题。这个工具也提供了相应的Eclipse插件,让你开发更加快速方便。它支持主流的服务器。
Borland Optimizeit Suite(http://www.borland.com )也是一个很是好的性能监测工具,它跟Borland产品整合得很是好。不过,运行这个工具,你最好准备一下,最好有2G内存,不然,原本系统好好的,一运行起来,你机器反而死掉了。
第3、软件性能测试工具
Ant+Windows计划任务建立公司的DailyBuild自动化测试流程,这个是之前作的一个测试流程。使用这种测试流程,无非一个目的,就是提升公司的软件质量。
Jmeter(http://jakarta.apache.org/jmeter ),这个工具是apache出品的,做为apache忠实的Fans,我对Jmeter也是很喜欢,使用Jmeter,你能够摸似多用户环境,对应用系统进行测试,测试整个应用系统可以承受的最大并发量。
LoadRunner(http://www.hp.com ),假如你不知道这个软件,那你确定作不了测试工程师,这个是最专业的一个软件性能测试工具,它能够模似上千万个用户量来进行压力测试,检测系统可以承受的最大并发量。这个软件我只用过几回,编写脚本,进行测试,使用来说其实算是比较简单。
5、软件发布
软 件的发布咱们会怎么去作呢?咱们通常作法就是,将数据库脚本化,包括建表语句、初始化数据等,还有制做WAR文件或EAR文件。而后到客户那边,咱们须要 将数据库表及数据进行初始化,接着,将WAR或EAR文件发布到应用服务器上。这个也许是咱们到客户如今发布常常在作的一件事情。那能不能作得更加简单 呢?作法通常有两个,第一个就是使用Ant,编写一个初始化数据库跟发布应用程序模块的Ant脚本,而后到生产机上直接运行该脚本便可;第二个就是制做安 装文件,通常用来制做安装文件的有IzPack,这个是用得最多的一个免费工具,你可使用这个免费工具来制做安装程序。也许客户都习惯了安装程序的安装 方式了,制做一个可执的安装程序,有助于提升软件产品化的档次。
6、软件维护阶段
第1、客户CASE跟踪管理工具
客 户CASE跟踪系统相信不少作CISCO公司金牌代理的人都会用过。咱们必须在公司内部创建相应的CASE跟踪制度。当用户使用系统的时候,发现一些问 题,那咱们须要对这些问题进行录入并进行跟踪。像客户呼叫服务系统等等一些商业化的软件外面仍是不少的,这些系统其实公司本身开发一个也是很快的。但必须 要有。这个也是提升整个公司总体服务形象的一种态度。php