??xml version="1.0" encoding="utf-8" standalone="yes"?>中文字幕亚洲无线码,亚洲丰满熟女一区二区v,亚洲男人第一无码aⅴ网站http://www.tkk7.com/freeman1984/category/46247.html STANDING ON THE SHOULDERS OF GIANTSzh-cnMon, 20 Jun 2011 15:54:13 GMTMon, 20 Jun 2011 15:54:13 GMT60大家都用什么bug理软gQ?/title><link>http://www.tkk7.com/freeman1984/archive/2011/06/20/352649.html</link><dc:creator>@joe</dc:creator><author>@joe</author><pubDate>Mon, 20 Jun 2011 03:38:00 GMT</pubDate><guid>http://www.tkk7.com/freeman1984/archive/2011/06/20/352649.html</guid><wfw:comment>http://www.tkk7.com/freeman1984/comments/352649.html</wfw:comment><comments>http://www.tkk7.com/freeman1984/archive/2011/06/20/352649.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.tkk7.com/freeman1984/comments/commentRss/352649.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/freeman1984/services/trackbacks/352649.html</trackback:ping><description><![CDATA[  公司以前用的mantisQ冒失功能太单了Q二ơ开发比较困难。现在想和公司的目理软gq_Qjava语言Q集成,不知道大家有什么经验分享一下?Q,或者介l几个二ơ开发容易一点的Q?img src ="http://www.tkk7.com/freeman1984/aggbug/352649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/freeman1984/" target="_blank">@joe</a> 2011-06-20 11:38 <a href="http://www.tkk7.com/freeman1984/archive/2011/06/20/352649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>敏捷开发中q度的把?/title><link>http://www.tkk7.com/freeman1984/archive/2011/03/23/346861.html</link><dc:creator>@joe</dc:creator><author>@joe</author><pubDate>Wed, 23 Mar 2011 07:43:00 GMT</pubDate><guid>http://www.tkk7.com/freeman1984/archive/2011/03/23/346861.html</guid><wfw:comment>http://www.tkk7.com/freeman1984/comments/346861.html</wfw:comment><comments>http://www.tkk7.com/freeman1984/archive/2011/03/23/346861.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/freeman1984/comments/commentRss/346861.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/freeman1984/services/trackbacks/346861.html</trackback:ping><description><![CDATA[<p>目l理被问到最多的问题是Q?#8220;q个目什么时候才能完成?”</p> <p>被问的时候,可能目才定下来Q仅仅知道大概的功能模块Q非功能性需求还模糊不清Q甚臛_队成员都没到位。但是上U、销售、客h切地要知道Q这个项目什么时候才能完成?</p> <p>被问的时候,也可能项目已临近l束Q或者说临近当初计划的交付日期。然而待完成的功能还有一堆,试出来的bug有一大堆Q客户又提出了新的需求,团队正有职 …。但是上U、销售、客户非常急切地要知道Q这个项目到底什么时候才能完成?</p> <p>q还不算p糕。更头疼的问题是Q?#8220;再有三周Q项目应该完成了吧?”</p> <p>因ؓ后者根本不是问题,而是命o。项目经理必要能够合理解释Z么三周不能够完成目Q或者说明在三周内,能够完成什么?/p> <p>我们都用qMS ProjectQ?但是那上面的漂亮表格对这L困境毫无帮助。相反,正是Project 中的甘特囑֒日程表,埋下了陷阱。因为,在Project 中无法预估需要多工作日才能完成模糊不清的需求,也无法体现实际情况发生变化后对进度的影响?/p> <p>当我们讨度的时候,其实包含了两个未知的变量。第一是完成需求所要的工作量,包括需求定义、开发内容边界;W二是团队的工作能力Q包括成员的行业知识专业技能,成员之间、成员和外部的沟通能力,{等?/p> <p>关键在于,q两w是变量。如果Q务是搬一千块砖头Q每分钟每h能搬10块,那么l果是显而易见的?/p> <p><span>在敏捷开发中Q采用相对估和q代求精的方法来处理目q度的问题?/span></p> <p>首先是工作量。用估算代码行数或者界面元素的方式Q就像论斤卖书一P只适用于粗制滥造的软g生q程。用户需要的q不是代码或者按钮,而是可靠易用的功能?/p> <p>在敏捷开发方式中Q先q户和设计人员_略估计各个功能模块的相对规模和隑ֺQ给Z定的分倹{分g代表具体人月Qv相对比较的作用。例如有查询、显C、修改三个模块,如果实现昄模块的工作量?0分,那么查询模块可能?5分,而修改ؓ20分?/p> <p>下一步,选择一个工作量估分最低的模块Q例如这里是昄模块Q然后进一步考量其工作量。例如要准备数据库、设计界面、执行查询,昄内容{等。假设这轮估得出此模块需?0人天Q从而得出单位分值对应的人天?Q那么,整个目需?5人天?/p> <p>q个估算建立在对目的初步了解上Q主要依赖项目经理的l验。有偏差Q没关系。接下来通过q代来求_。先来实现显C模块,如果事实上花费了12人天Q那么根据比例关p,剩余内容的估大U就?2人天?/p> <p>当然Q比例关pM不是一成不变的。随着模块的逐个完成Q项目经理对目的认识也在加深,他可以再调整剩余模块的相对分倹{?/p> <p>在实际操作中Q项目经理首先按照优先排列功能模块。然后把高优先的模块尽可能地细分,再选择分值最的模块开始开发。统计d作量Ӟ按比例篏加其他模块的工作量,q加一定的调整pLQ因为模块的复杂度不是线性增长的。每ơP代开发完成后Q逐步降低调整pL。通常4~5ơP代后Q可以将调整pL归零?/p> <p>在上面的例子中,W一ơ估的初步l果?5人天Q因为完全是凭经验,因此要给较大的调整系敎ͼ比如?.4Q因此给出的估算工作量区间ؓ[45*0.6,45*1.4],?7?3人天之间。ؓ保险赯Q项目经理上报的工作量ؓ70人天?/p> <p>W二ơ估,剩余内容的初步估ؓ42Q调整系C降ؓ0.3Q因此给Z区间ؓ30?0人天之间。依此类推,通过不断q代Q对剩余工作量的估算越来越_?/p> <p><strong>q样估算的好处在哪里Q?/strong> </p> <p>首先Q工作量变量的很大一部分因素Q存在于非功能需求,例如界面的美观程度。而同一目的不同模块之_非功能需求往往是一致的Q相对估法qo了这一层复杂度。团队能力这一变量因素也是如此。当Ӟ随着目的进展,成员的开发能力应该有一定的上升Q但随着加班出差{因素,投入E度也可能下降,因而会怺抉|。M在周?个月以内的项目中Q很出现团队工作能力戏剧性变化的情Ş。因此相对估也qo了这个复杂度?/p> <p>其次QP代求_方式让项目经理对估算旉更有把握。最初出现偏差是必然的,但只要团队稳定,没有大的需求变动,估算范围迅速收~。这比一ơ性报数更准确?/p> <p>它的额外好处是,敏捷开发是遵@优先U的Q即使对剩余旉Q即低优先模块的开发时_的估不十分准确Q媄响也不是非常大?</p> <p>Ҏ一下甘特图方式Q在开发初期就要把各个模块的开发时间估出来以l计总量Q这是瀑布开发的模式?</p> <p>q度问题的另一斚wQ是目l理如何了解团队以及每个开发h员的开发速度。当d分配之后Q项目经理如何做到心中有敎ͼ估算d实际完成旉?/p> <p>敏捷开发过E中Q由开发h员自己来估算完成该Q务所需要的旉。当Ӟ每个人的能力不同Q每个h的心态也不同Q有的h保守Q有的h乐观。没关系Q还是靠q代来逐步求精?/p> <p>在每天的例会上,开发h员被要求对当前Q务的剩余开发时间做重估。不同于Project l计每h每天在Q务中p了多时_敏捷方式只关心这Q务还需要多时间去完成Q直到归Ӟ然后再来l计实际的工作时间?/p> <p>Z么?因ؓl计开发过E中的花Ҏ间是毫无意义的。这和搬砖头不同Q也许昨天用?个小时没有一点进展,今天一旦想通了׃半功倍。我们真正关心的Q就是到底还需要多时间来完成dQ而不是已l花Ҏ不可恢复的时间成本?/p> <p>在每天例会中Q项目经理需要注意时间曲U保持水q的成员Q他是不是遇到瓶颈了Q是否需求帮助?也要留意旉曲线下降q度q大的成员,他发C什么好的办法,有没有低估需求?q样Q项目经理会更面向结果,只要按计划保证质量完成Q务就行,成员到底׃多少旉是个人的事。传l做法记录每个h每天的工作内容,W一是因J琐而失真。其ơ,一旦上U发现某人工作时间不够(即便他完成了dQ,忍不住会z新dQ从而造成干z越多,反过来打ȝ序员的积极性?/p> <p>敏捷估算的关键之处,是把成员能力q个变量的估,交给最合适的人去做,即程序员本h。然后通过比较历次q代时的预估和实际时_l出校正pLQ以避免E序员过于保守或q于乐观。这肯定不是l对准确的,但效果往往比项目经理自己拍脑袋估算Q然后强行指定deadline 要好得多?/p> <p>在敏捷开发中Q做计划比计划本w更重要。项目经理需要时d前考虑Q考虑各种动态因素,而不是死报着计划本n。在q度估算的时候,目l理应该在不同阶D,Ҏ实际情况Q给出合乎情理的回答?/p> 转蝲自:http://yale.javaeye.com/blog/966689 <img src ="http://www.tkk7.com/freeman1984/aggbug/346861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/freeman1984/" target="_blank">@joe</a> 2011-03-23 15:43 <a href="http://www.tkk7.com/freeman1984/archive/2011/03/23/346861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的创业体会和大公司的做事比?/title><link>http://www.tkk7.com/freeman1984/archive/2010/10/01/333604.html</link><dc:creator>@joe</dc:creator><author>@joe</author><pubDate>Fri, 01 Oct 2010 03:09:00 GMT</pubDate><guid>http://www.tkk7.com/freeman1984/archive/2010/10/01/333604.html</guid><wfw:comment>http://www.tkk7.com/freeman1984/comments/333604.html</wfw:comment><comments>http://www.tkk7.com/freeman1984/archive/2010/10/01/333604.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/freeman1984/comments/commentRss/333604.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/freeman1984/services/trackbacks/333604.html</trackback:ping><description><![CDATA[<p>文章转蝲自:http://www.javaeye.com/topic/646406<br /> <br /> <br /> </p> 工作五年Q一晃已q过三十了。读研时Q独立做目Q毕业头三年Q主要在大公司工作,后来Q也是08q_半创业。具体点Q合伙h吧,自己负责IT部门Q到现在6人,公司d20来hQ旅怸。这两年严酷的创业经历,让我发觉得理(做事)Q以及领?带h、待人,不是h)的重要性。因为,随着l织的扩大,混ؕ度无形中׃增大Q管理和领导Q就是让q种混ؕ重归有序Q重归单Z战那U意囑֒行动的高度统一?<br /> <br />     说得功利点吧Q一个h的胦富和其媄响力是成正比的。媄响力本质上就是对他h的h倹{比如,郎_xian_评的出场费一天超q?5万。作为技术h员,如果我们只能影响周边几个人,那么我们凭什么拿那么高的报酬Q除非我们做的事情媄响了很多人,比如杨勃的豆瓣网。所以,我还是觉得,技术h员往高处发展Q逐渐应该有管理意识、培养自q理能力。技术从书本上可以学到很多,理q真得实践,书上看到的,你觉得很弱智的问题,比如盲目扩张Q自׃w经历时Q一样会犯,也许是行Z惯在起作用,看书不以改变行为?<br /> <br />     回到正题上?<br />     也许是自己曾l在较大公司或团队的做事习惯和视野,刚创业时Q用在这U小团队的商业项目开发上Q几乎惨败?<br />     先说目开发这块吧?<br />     大家知道Q项目管理和q程理是两码事Q前者关注目标和q度Q成本和收益Q后者关注做事流E、方法?<br />     目理Q体会最qQ就是目标和d分解、进度控Ӟ以及沟通?<br /> <br />     <strong>目理软g</strong> <br />     从大公司出来的hQ我x喜欢玩的Q就是借助于项目管理Y?核心是甘特图)。市面上的大多数知名的项目管理YӞ无论是桌面版q是|页版的Q我都试q。当然最后也选择了一ƾ:ConceptDraw ProjectQ用了一q多Q也多少有些用。但最后还是发玎ͼ它其实对目q度和质量关pdƈ不大。也许,一个Excel表格更实用?<br />      目理软gQ本质上是解决一U沟通和职责分配的问题。比如,一个项目,折叠成一个三层树形结构,老板只关心第一层,也就是整体进度;中间是项目经理关注的功能层,最后一层,也就是具体的dQ是开发h员关注的。想惻I如果没有q玩意,你怎么告诉其它目q系度?但又引出几个问题Q?<br />     靠文档来沟通,q是靠信? 太在乎文档,往往D每天d注文档如何漂亮、有说服力,qؓ此花大量旉Q而不是项目如何漂亮。另外,是否有文档就可以防止扯皮、兑现承诺?我们是关于项目目标,q是x彼此的博弈? <br /> <br />     q度偏差 创业型项目,往往都是以前没有接触q,其进度评估往往有很大误差,比如业务需求的挖掘和变化,技术难点,开发h员素质。我们是xq度Q还是关注项目本w的质量Q两者都要,但如何兼?虽然有方法学Q比如砍掉优先低的Q但你怎么让老板怿某个核心功能得四天旉?<br />     在我们的q度设计不合理情况下Q是否开发h员完成甘特图(WBS)下的dokQ远q不够,d分得太细Q往往限制了开发h员的创造性和自我评估能力Q如果提前两天完成呢Q?<br />     我们现在是以目理软gQQ务的下达主要以邮件传达,每周一上午的周例会会白板宣布。我发现白板比投׃APPT好用?<br /> <br />    <strong>关于规范</strong> <br />    q也是大公司特别喜欢玩的?<br />    也许我们前期会制定一个的架构、设计文档,代码规范Q这有一个规范徏立的旉成本以及规范本书的合理性,再说如果一个开发h员,特别是高手,如果不认同你的设计和规范Q你要强推,他要么走么怠工。规范的本质是ؓ了协作和后期可维护,如果只有两个人或一个h写某个模块,你觉得有q个必要吗?规范整洁的代码,在项目初期,对用L价值关pd,你会兛_豆瓣|的js代码写得很漂亮吗Q我们应该关注代码的健壮性而不是可l护性,我们不是在开发Windows?<br /> <br />     <strong>人适应目Q还是项目适应?/strong> <br />     大公司,往往是来了一个项目,赶快招hQh来适应目。小公司呢,我现在的看法是,目适应人。小公司Q往往一个项目做砸,公司面临解散。所以,我认为,最好还是按照开发h员的擅长Q保证功能质量,最快的速度上线。另外,Z达成q度Q可以在上线初期砍掉不太重要的栏目或功能?<br />     我在q个上面栽过跟头的。比如开发h员的擅长Q如果他擅长jsp开发模式,而不是Hibernate+Spring的分层开发,p他按自己的意思做吧。因为,创业型项目都不会太大Q即使技术实C感觉完美了,用户可能感觉不爽Q再_目开发,涉及C务调研、需求分析、原型界面、架构、开发、部|Ӏ推qѝ开发,也就是代码实玎ͼ占去目旉Q也怸?0%。项目如果证实有商业前景Q代码重新实C遍,׃了多时间?<br />     但我也深深地意识到我们项目管理的U别Q就如同CMM1到CMM4。但我还是觉得目前是最好的选择?<br />     如果最低层ơ的用户需求目标都达不刎ͼ直接考虑代码怎么有可扩展性、可l护性,对于公司就是找歅R?<br />     另外Q尊重和信Q、支持开发h员的技术选择Q往往是一U激励、增强团队凝聚力的方式。万众一心,比什么目标、进度更有效、实际?<br />     我们应该培养一U团队成员的内部创业心态,而不只是敬业?<br /> <br />     在进度把控上Q我现在更們֐于强调我们的目目标和紧q性,而不是他们的d。因为我希望大家的关注点是项目,而不是他的上U,他应该对目负责Q而不只是对上U负责?<br /> <br />     <strong>说说沟?/strong> <br />     目理中最隑֤理好的,是沟通。以前,我比较关注于工具Q如邮g、文档、ppt讲稿会议Q逐渐我关注效率和效能Q特别是态度。沟通最基础的就是态度。如果网站上U后Q订单提交出C个核心bugQ你是直接找开发h员问责;q是告诉他哪儿出了问题,q个问题的严重,q且自己反省Q比如测试流E出了问题。出现这U事情,也许需要负责hN若轻的气度。但更深层次的,如果负责够培d员工质量意识Q危机意识,才是L。因Z个有强烈质量意识的团队,他自然会d代码健壮性、功能易用性精益求_,自然会去配合试程?<br />    刚才那个沟通问题,对开发h员的态度Q前者是负面Q后者是中立。那么前者,开发h员的反应是如何不让领gơ责怪自己,比如只做领导安排的事情;后者的反应是怎么Lq,不让q样的事情发生?<br />    如果你认可创新就可能出错Q如果你认可开发h员都是想做好的。那么所有的事情Q朝正向发展q出了最军_性的W一步?<br /> <br />    <strong>沟?命o式还是征询式</strong> <br />    在沟通,特别是下达Q务或做决{这cM情上。应该说中国l大多少理者都是用命o式。我q去l常在用Q但一直在试图ҎQ改用徏议式和征询式。管理者最需要、最隑ּ口的一句话是:Do you think soQ命令的方式Q经常出CU不能理解上U的意图Q严重的出现抵触。每个hQ其实都喜欢别h按自qx做事Q但你怎么知道自己的想法或决策是对或不是偏颇的Q怎么让团队愿意去执行Q去征询团队其他成员的意见,让他们参与,往往能够培养其主人翁意识、责L、向心力Q还能够完善自己的想法。但要将员工参与意识Q{化ؓ一U习惯,太难?<br />     当大安没有主见Ӟ需要领D的果断、魄力和强势Q但q种Zq不多,而且q种情况Q需要团队成员对领导者的信Q?<br />     <br />     <strong>遵守制度Q还是徏立信?/strong> <br />      在大公司Q往往是告诉你怎么去遵守公司制度。在公司,我认为最基础、最核心的一件事Q就是徏立信任,让团队信M的h?说到做到)Q信M的能?能够把大家带C个新的高?。徏立了信Q后,下一步的核心工作Q怎么你的个人目标,也就是团队目标,转化为每个成员的个h目标?<br />     有了信Qq个基础Q才会有了团队徏讄W二个核心:Ȁ励?<br />     是激励,而不是约束、监督,让团队有战斗力。但大公司往往喜欢后者。也许,大公叔R是职业经理hQ反正是打工Q太x于事。如果说有个所谓的中国式领|我觉得就是以Zؓ本,对h的尊重。h的关pd理好了,事情好做?<br />     加班、考勤、上|监控,q类对信仅R激励极L坏力的行为,也许是工业型C会Ҏ们这个思考性创造性行业的侵蚀。知识型力_者,需要一U与体力型劳动者完全不同的理模式Q这U模式也讔R要一个从萌芽、生长到成熟期。现在在目前的中国,q只是刚走出萌芽期?<br />     <br />     以前完整看过余世l的11套视频,q看q几遍。他那种人本理念我还是很认同Q只是,他在大公司、规范公司的做事情方法和风格Q完全照搬拿到小公司Q非常危险。你能够拿幼儿园那种教育Ҏ来教育成qh吗?公怸具备大公叔RU职业化的环境,也不具备大公司在行业中的市场C及资金实力?<br />     如果说大公司讲究做事Ҏ、流E,如SWOT分析法、BCG矩阵Q小公司更看重灵zL、市场适应性。小公司应该适当短视、急功q利Q否则在你实施一个三q计划时Q第二年q不赚钱可能撑不下厅R?<br />     所以我觉得Q在跨国大企业呆惯了Q出来创业很危险。一个是做事Ҏ不适应Q另外一个就是没有^台。如果要出来创业Q以前那U大企业的经历可能更是一U劣ѝ?也许有一U情况,你是大公司的高官Q拿CW很大的风险投资Q然后出来创业?<br />      <br />     <strong>Z招聘 </strong><br />      <strong>薪水</strong>  如果公司l得Pq且应聘者能力差不多?׃要太在乎?00?00。虽然说臛_要不低于行业q_|IT人员是IT行业q_|而不是本公司所在的行业q_|Q但最重要的,q是不要低于当事人的期望|因ؓ最核心的是满意度,而满意度军_于期望值和实际值的差距。对于小公司Q往往一个h技术h员的成本和收益,和其工资差距非常大,有可?0倍。所以,我们的关注点Q应该是怎么一开始留住这位h才。然后,怎么让其充分发挥潜力。小公司往往不是因ؓ节省那几千几万的工资成本L的,而是充分利用q位人才才活下去了?<br /> <br />      另外Q不要以为有多少人才选择的机会,公司往往不受高人才的青睐。太高的h才,可能MP而且往往太有个性,很难合作愉快Q除非在来公司前有很长时间的了解?<br />      招聘到合适h才后Q应该让其忘掉薪_专注于工作,L工作本n的乐。当Ӟ要做到让其在薪水上有优越感,也许是项目很盈利的那一天,开始时很难?<br /> <br />      <strong>人才标准</strong> 如果其能力和你预期相差不大的话,更应该考虑其态度、做事风|甚至是hD。因为其能力的发挥,和这个环境,特别是他的直接利益相兌,也就是上司,关系太大。如果配合得好,一个h可以三个。否则,那种内耗导致的q度延期Q由此引L市场Z丧失Q公司胦力无法支撑,往往是致命的。因Z个几人的IT团队Q每一个h的职责就如同那木桶的一块板Q缺了那块都存不了水?<br />      比如关于质量Q更切说是内容质量Q我们目前做旅游电子商务Q我认ؓ内容质量很核心。但你招q来的同事,始终认ؓ先要量,什么都可以抄,而我质,原创、半原创Q可以少而精Q而不能多而ؕ。除开目q度Q怎么L通?最好两个h一开始都认同原创的力量?<br /> <br />      提升一个h的技能不难,但改变一个h的态度比较难,改变一个h的hD几乎不现实。所以先扑ֿ同道合的人吧?nbsp;    <br />      别期望h才是可替代的。我们不是大公司Q我们缺了谁Q那一块就不{?<br />      大家都知道,松耦合要付ZP比如SOAP协议的低性能QAMFU有协议的高性能。创业期Q不要太多考虑人才替换Q而是x怎么发挥人的潜力Q留住hQ尽快高质量完成目。h才替换的一个假设,可能是你对自q理的不自信,因ؓ你不怿自己能够留住人?<br />      <br />      q次写q么多吧?<br />      我似乎有q种体会Q考大学、四六q类资格、证书类考试最好؜Q因为只要勤奋就可以Q再加点Ҏ可以出cL萃了?nbsp; 上班也比较好P说找工作吧,像我搞技术的Q本w对技术很狂热Q根本就不愁找不到工作,因ؓ面试时我觉得那家伙应该比我牛Q正好可以切切,没想太多所以没啥怯场或不自信。工作吧Q如果是技术类Q特别是商业软gQ技术难度都不大Q按上司意思来Q很Ҏ搞定。创业呢Q自p做商业判断、业务决{,q要协调若干人的工作(协调的本质是协调利益)。做事和事Q完全是两码事,有些难。不q,创业q是很有意思,因ؓ你可以按自己的意愿去工作ȝz,当然也是受限环境的自由?<br /> <br /> <br /> 我将我的一个回复放在这个地方,特示警醒Q?<br /> <br /> <div id="r3991lj" class="quote_title">引用</div> <div id="zpd39jv" class="quote_div">告诫各位处于开发第一U的朋友Q千万不要受本文的误|把规范和设计文档不当回事?<br /> <br /> 我的看法Q?<br /> 1、文档的多少和深度决定于目环境?<br />     如果是大目Q比如二三十开发h员,架构文档、需求文档、代码规范等都是必须Q否则开发h员不能迅速了解项目技术和业务特点Q从而无法快速开发,也即是规范可以降低培训成本和团队沟通;另外Q项目开发中后期可能Ҏ不可控,谁都看不懂其它h的代码。部|时看到的一些bug无法及时修复Q因为到处都有地雗我以前l历q这L目Q最后加班都没用?<br /> <br />     如果是品型Q规范更重要。当然我说的产品可能?.0版以后,因ؓq时候的产品基本得到了市场的认可。而在初版Ӟ代码写得烂都没关p,因ؓ你不不知道用户会不会买单Q也不知道能否按q度开发完成。而在后箋版本Q如果没有规范文档,l护的成本都不亚于重新开发。特别是处于一U的开发h员会怨声载道Qؓ什么要我来收拾D局Q那么,q样的士气,开发效率怎么会高Q项目质量怎么会高Q?<br /> <br /> 2、成熟型大公叔R套做事流E,可能高手受不了,但可能是最优的Ҏ。因为,到项目后期维护,往往只是一些业务功能的删减改进Q不需要技术高手,q个q程可能漫O几年Q项目维护成本会非常高,雇䄦高手一来他不愿意干二来也不需要这UhQ如果项目代码还l持在一U?#8220;U序”Q初中开发h员就可以胜QQ有什么不好呢Q?<br />    目上线Ӟ是ؓ了追求利润。项目维护期Q是Z省成本?<br /> <br /> 3、刚入道的朋友,最好是按规范来Q就像学武术Q先要学套\。否则,L的编E坏习惯Q比如文件名叫Aaa1.javaQ代码没有羃q。过几年非常难改。而好的编E习惯,可以提升开发效率,q能让自己思维清晰?<br />    学技术阶D,一定要注意代码的可l护性、健壮性及灉|性,只有L对代码精益求_态度Q你才可能成为技术高手。技术学好,做技术管理就有了基础Q而且别h也会服你?/div> <img src ="http://www.tkk7.com/freeman1984/aggbug/333604.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/freeman1984/" target="_blank">@joe</a> 2010-10-01 11:09 <a href="http://www.tkk7.com/freeman1984/archive/2010/10/01/333604.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>l敏捷团队中的架构师?0个徏?/title><link>http://www.tkk7.com/freeman1984/archive/2010/09/24/332754.html</link><dc:creator>@joe</dc:creator><author>@joe</author><pubDate>Fri, 24 Sep 2010 05:13:00 GMT</pubDate><guid>http://www.tkk7.com/freeman1984/archive/2010/09/24/332754.html</guid><wfw:comment>http://www.tkk7.com/freeman1984/comments/332754.html</wfw:comment><comments>http://www.tkk7.com/freeman1984/archive/2010/09/24/332754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/freeman1984/comments/commentRss/332754.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/freeman1984/services/trackbacks/332754.html</trackback:ping><description><![CDATA[<p>微Y澛_利亚的解x案架构师Tom HollanderQ在TechEd Australia大会上D行了一场题?#8220;<a id="xgik" title="敏捷团队中的架构师角? >敏捷团队中的架构师角?/a>”的演讌Ӏ在演讲中,他讨Z他作为领导敏捷团队的架构师所做的工作?/p> <p>在谈到架构师的角色时QHollander指的?#8220;解决Ҏ架构?#8221;或者应用架构师。他不是指企业架构师或者其他的专业人士Q专_于特定的领域,例如消息或基设施Q?/p> <p>Hollander的团队采U了?周P代以及最后的E_阶段Q几天代码冻l的旉Q组成的程Q实施了每日站立会议、每日构Z自动化测试的持箋集成{实践,q用了许多角色Q?</p> <ul> <li><strong>PjM</strong>——项目经理,cM于Scrum MasterQ确保团队遵循了程 <li><strong>PdM</strong>——品经理,也被UCؓ客户或Product OwnerQ决定品应该是什么样? <li><strong>架构?/strong>——解x?应用架构? <li><strong>开发h?/strong>——开发团? <li><strong>试人员</strong>——测试团? <li><strong>用户体验设计人员</strong>Q?strong>UX</strong>Q——用户体验团? <li><strong>发布人员</strong>——承担构建和发布的职责,负责l护构徏的流E?</li> </ul> <p>Hollander针对解决Ҏ架构师如何在敏捷团队中取得成功,提出了最重要的十件事情:</p> <ol> <li><strong>“正好_”的预先设?/strong>——除了非常简单的目Q一定时间的预先设计Q例如,1?周)是绝对必要的Q其旉长短会取决于应用的类型——网l应用程序、智能客LQsmart clientQ、移动或批处理,基本的功能需求是什么,是长期的解决Ҏ抑或是折L、暂时的ҎQ都要弄清楚。预先设计的目的是要军_Q用什么技术——例如,ASP.NET或MVCQ应用程序是什么类型—?层?层抑或是面向服务的应用,如何讉K数据库——存储过E、实体框架、LINQ、依赖注入(DIQ。一简短的文档可以包含所有这些信息以供大家参考? <li><strong>从垂直分片开?/strong>——是指从一块功能开始(例如d面Q,可能地在垂直方向把它切分ؓ很多层,从而把前一阶段所军_的所有技术结合在一赗这验证设计决{的正确性,而且所有的技术可以一起工作,q且向开发者展C在开发新代码时可以遵循的模式。如果发现最初的设计决策不当Q此时是一个合适的修改旉? <li><strong>在每ơP代中的Just-in-time设计</strong>——在每个4周P代的中段Q项目经理、品经理和架构师应该聚在一赯论在下一个P代中要完成的需求,保他们每一位都同意q些需求,重要性更高的事情攑֜了前面处理,而且每个人对一切事情都非常清楚。这些讨论在当前q代中会以不太明昄方式延箋一个星期。接下来的一周,也即当前q代的最后一周,架构师复审下一ơP代的需求,作出必要的设计决{,以便团队可以在下一个星期基于这些决{开展工作。如果需求与以往相当不同Q那么,架构师会开发一些原型,~写一些代码来证明概念Q绘制一些图表,然后把所有这些东襉K~ؓ5늚文g以供参考。这不是Z制定出有利于开发h员的详细设计ҎQ而是要确保新的需求满_局的要求? <li><strong>信Q你的团队...但要跟他们在一?/strong>——这关乎架构师与开发h员的关系。架构师需要确保他没有逾越自己的角Ԍ没有独占所?#8220;做决?#8221;的乐,使得开发h员的工作变得无聊。与此同Ӟ架构师需要给团队提供指导Q解决那些可能会D开发h员停的困难问题。架构师每天都应该与每位开发h员接触,h他们在做什么,q且在他们遇上编E问题的时候给予帮助。特别是当开发h员不喜欢L帮助Q试图花上整整一个礼拜的旉来自行解决问题的时候,q种帮助ؓ需要。这U关pM适用于PjM和测?构徏/发布团队? <li><strong>~写代码Q?/strong>——架构师应该知道代码的质量如何,q样才会对他做出的决定所产生的媄响有更好的理解。他也可以整明白何时重构是必ȝ?~写代码的架构师在开发团队中有更好的声誉。也是_Hollanderq不认同Q设计和开发)职责的m渭分明。他q认为,架构师仍然是架构师,他不一定要像普通的开发h员一h长于~写代码? <li><strong>参与一?/strong>——架构师参与所有与目有关的会议:设计、开发、代码评审、需求规划等Q这是有好处的,因ؓ他能够以更广阔、更清晰的视角看待正在发生的事情Q而且他能够通过告知产品l理其决定的潜在后果Q从而帮助他/奚w免在早期阶段做出错误的决定? <li><strong>推动质量文化</strong>——一个成功的团队Q一个h人都x为其中一分子的团队,是徏立在质量文化之上的:没有人偷工减料;没有人提交拙劣代码;如果设计中有一个重大的~陷Q它l不会不知不觉地淯养I所有h都是诚实和开攄Q寻求整个团队达到最佳的l果。Hollander承认Q徏立这样一个团队很难,但ƈ非不可能。首先,架构师应该在一开始就创徏一些规则,q些规则不会因ؓ开发h员不喜欢随着旉而改变。比如决定编写单元测试,再比如在每次提交以前都要q行代码评审Q包括由架构师提交的代码。如果评审h员(可以是团队中的Q意一位)不认可代码,代码׃能提交? <li><strong>知道何时需要改?/strong>——架构师应该非常灉|Q随时准备好在设计需要改变的时候去改变设计。早期的解决Ҏ也许不再适合Q抑或是新的需求需要不同的Ҏ? <li><strong>屏蔽来自外部的随?/strong>——虽然这通常是项目经?Scrum master的职责,但架构师可以保护团队不受外部h的媄响,q些影响往往会分散团队的_֊和浪费真正工作的旉。D个例子:业务团队可能惌以某U特定的方式完成某些特定的事情,而他们的hq不全然合理Q也q不是必d现?nbsp; <li><strong>撰写文档...但只有当有h需要阅d们的时?/strong>——Hollanderq不提倡记录一切,也不提倡根本不撰写M文档。他认ؓ有必要取得一个^衡——只~写一定数目真正有帮助的、有Z去阅ȝ文档。文档在记录详细设计的决定(比如数据模型Q方面是很好的蝲体。P代的设计军_Q虽然它们由整个团队在P代开始之初讨论得出,但我们仍然徏议将它们记录?늚文档之中Q以备开发h员日后不记得架构师言论的时候进行查阅。而当最开始的开发h员和架构师离开目、加入其他项目之后,新加入项目工作的Z能借助于这些文档理解某些决定的来龙去脉?nbsp; </li> </ol> <p>lg所qͼHollander指出Q架构师应该保他从理论上和实践上都是团队的一分子。架构师不应该编写所有的代码Q而只是其中一部分,他不L试或部vq些代码Q但他要保整个程的顺利进行?br /> 转蝲自:http://www.infoq.com/cn/news/2010/09/Tips-Architect-Agile-Team</p> <img src ="http://www.tkk7.com/freeman1984/aggbug/332754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/freeman1984/" target="_blank">@joe</a> 2010-09-24 13:13 <a href="http://www.tkk7.com/freeman1984/archive/2010/09/24/332754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>敏捷开发中~写高质量Java代码http://www.tkk7.com/freeman1984/archive/2010/09/05/331072.html@joe@joeSun, 05 Sep 2010 04:20:00 GMThttp://www.tkk7.com/freeman1984/archive/2010/09/05/331072.htmlhttp://www.tkk7.com/freeman1984/comments/331072.htmlhttp://www.tkk7.com/freeman1984/archive/2010/09/05/331072.html#Feedback0http://www.tkk7.com/freeman1984/comments/commentRss/331072.htmlhttp://www.tkk7.com/freeman1984/services/trackbacks/331072.html转蝲自:csdn http://sd.csdn.net/a/20100308/259219.html
敏捷开发的理念已经行了很长的旉Q在敏捷开发中的开发P代阶D中Q我们可以通过五个步骤Q来有效的提高整个项目的代码质量?/p>

Java目开发过E中Q由于开发h员的l验、Java代码~写习惯Q以及缺乏统一的标准和理程Q往往D整个目的代码质量较差,难于l?护,需要较大的试投入和周期等问题。这些问题在一个项目组初徏、需求和设计均具有不完全可预期性和完备性的全新目中将ؓH出?/p>

如图1所C,敏捷开发过E经历需求调研,用例分析和用例分解,q入开发P代阶Dc在每个q代q程中,可以采用以下步骤来保证和提高整个目的代 码质量:l一~码规范、代码样?静态代码分?staticcodereview);单元试;持箋集成;代码评审和重?(Review&Refactor)。下文将针对每个步骤和其所使用的工兗方法进行详l描q?/p>

敏捷开发中的Java代码质量保证步骤

?.敏捷开发中的Java代码质量保证步骤

步骤一Q统一~码规范、代码样?/strong>

规范l一的编码会增加目代码的可L和可维护性,但实际情况往往是项目组内的Java代码开发h员的~码风格常常各不相同Q这可能是由于不?的经验习惯或者缺乏编码规范方面的学习造成的。这样一来,其他目成员或者维护h员在阅读目代码时就需要花Ҏ多的旉来理解代码作者的意图Q所以制?q取统一的编码规范就昑־很重要。编码规范主要应包含以下几个斚wQ?/p>

◆一般规则和格式规范。例如代码羃q、程序块规范、每行最大代码长度等?/p>

◆命名规则。例如包名、类名、变量、方法、接口、参数等命名规范

◆文档规范。例如类文g头声明、类注释、成员变量和Ҏ注释{规范?/p>

◆编E规范。例如异常、ƈ发、多U程{方面的处理方式?/p>

◆其他规范。例如日志格式、属性文件格式,q回值和消息格式?/p>

目的编码规范可以参考已有的一些Java~程规范书籍和其他相兌料ƈl合目的本w来制定Q可供参考的书籍有《Java~程风格?英文?名ؓQTheElementsofJavaStyle)。编码规范要形成文档Q而且要简z明了,q组l项目成员一起学习,保所有成员正理解所有条目?/p>

一旦编码规范确定,可以利用Eclipse自n提供的功能来控制代码样式和格式。具体做法是Q点击Eclipse?Windows->Preference菜单,在打开的Preferences对话框的左侧栏中扑ֈJava节点下的子项CodeStyle(如图2)Q该?和它的子允许您对Java代码的样式进行控制?/p>

Eclipse代码样式讄H口

?.Eclipse代码样式讄H口

例如Qؓ了用自动格式化工具Q可以在Eclipse提供的默认代码格式配|的基础上徏立自定义的格式。在Formatter面板中,点击 NewQ输入新的名字ƈ选择一个默认的配置作ؓ初始化格式,如图3所C?/p>

创徏新的代码格式配置

?.创徏新的代码格式配置

单击OK后就可以在新打开的窗口中q行修改定制自己需要的格式。如?所C?/p>

创徏新的代码格式配置

?.创徏新的代码格式配置

修改完成后点击Apply保存所作修攏V同时可以点击Export当前的格式定义导出成一个XML文gQ这样项目组的其他成员就可以很方侉K?q点d3中的Import按钮来导入该XML文g来用同一个代码格式定义?/p>

q样每次在提交代码到版本控制服务?/span>前就可以通过Eclipse界面里的Source->Format菜单来对代码q行格式化,从?使整个项目的代码h相同的格式。同样可以通过对CodeStyle下的其他目q行讄来帮助对Java代码的样式进行控制。将所有这些样式文件导出成 XML文g后,同编码规范一起归档,供所有项目成员用?/p>

步骤二:静态代码分?/strong>

在完成源代码的开发以后,下面要进行的工作是审视和测试代码。除了通过q行试代码来检查功能之外,q能利用一些静态分析工h快速、直接地 提高代码质量。静态代码分析工具ƈ不需要运行代码,可以直接对Java文g和Class文gq行分析Q通过一些检查条件的讄Q快速找C码中的错误和?在缺陗现在的静态分析工具很多,有FindBugs、PMD、IBMRationalToolQ等{。在q里Q选择FindBugs作ؓ静态代码分析工 兗FindBugs可以和日常开发工具Eclipseq行集成Q在开发过E中Q就可以方便的开始静态代码的查。通过查Class文g或者JAR?Ӟ字节码和一l缺h式进行对比,来发现可能存在的代码问题。在Eclipse的开发环境中Q用插g安装的方式安装了Findbugs后,?Eclipse的配|选项中就会多出来FindBugs的配|选项。可以对自己的项目进行配|,选择需要的Detector查代码?/p>

FindBugs的配|选项

?.FindBugs的配|选项

讄好自q规则后,在需要检查的代码文g夹上点击右键Q就可以启动FindBugs查。代码可以是一个项目,也可以只是几个文件?/p>

q行FindBugs

?.q行FindBugs

查完毕后Q会出现FindBugs视图Q把所有检查的l果Ҏ错误分组展示。点ȝ果里面的每一个错误,会自动打开对应的代码。当Ҏ规则?正了所有的错误Q或者说潜在错误Q这些代码也通过了静态代码检查。FindBugs的检查结果可以是XML文gQ也可以是文本文Ӟ便于目的集成管?和检查保存?/p>

FindBugs查结? src=

?.FindBugs查结?/p>

步骤三:单元试

单元试用例设计和评?/strong>

单元试是Y件开发过E中重要的质量保证环节,在此环节中,设计和评审对于保证整个单元测试过E的完整性和有效性来说十分重要。设计阶D需要具 体考虑要对哪些代码单元q行试Q被单元之间的关系Q测试策略,以及单元试用例设计{,q最l输出《单元测试用例设计》文档,用来指导具体的单元测?执行。在用例设计中,通过对代码单元输入和期待输出的定义来保证该单元的功能正确性,边界值的试和异常测试非帔R要。同时也配合试用例和功能块的匹?Ҏ来衡量用例设计的完整性?/p>

在用例设计完成之后,下一步的工作是q行试用例的评审。个人的理解和经验始l是有限的,用例评审可以借集体之力,对用例设计进入查漏补~, q一步保证测试用例的有效性。由于单元测试属于白盒测试范_它主要通过对代码的逻辑l构q行分析来设计测试用例,因此Q评审员的选择最好以理解代码逻辑 l构为前提,如果评审员来自相?a class="fllink" target="_blank">模块Q还能够有效的发现模块相x和依赖性所带来的问题?/p>

模拟对象技?/strong>

在实际项目中Q开发h员自q代码往往需要和其他的代码模块或pȝq行交互Q但在测试的q程中,q些需要被调用的真实对象常常很难被实例化,?者这些对象在某些情况下无法被用来试Q例如,真实对象的行为无法预,真实对象的行为难以触发,或者真实对象的q行速度很慢。这时候,需要用模拟对 象技?Mock)Q利用一个模拟对象来模拟我们的代码所依赖的真实对象,来帮助完成测试,提高试覆盖率,从而提高代码质量。模拟对象技术利用了在面?接口的编E中Q由于代码直接对接口q行调用Q所以代码ƈ不知道引用的是真实对象还是模拟对象,q样可以顺利的完成对代码的试Q模拟技术有很多U,?jMockQEasyMockQMockitoQPowerMock{等。其中Mockito消除了对期望行ؓ的需求,避免了这些代码的大量初始化?/p>

MockitoCZ

?.MockitoCZ

在模拟对象过E中Q先模拟一个需要调用的List对象LinkedListQ再讑֮q个对象的行为,当调用get(0)的时候,q??#8221;first”。这P试代码可以利用这个对象来试我们的功能代码,需要调用和q回值的时候,可以利的得到模拟对象的q回倹{也需要对模拟对象 q行错误情况的模拟,保证代码寚w误的处理的正性?/p>

试覆盖率分?/strong>

Z衡量单元试的质量和覆盖的范_需要对单元试的代码进行测试覆盖分析。常用的衡量试覆盖率的指标主要有语句覆盖率、分支覆盖率、\?覆盖率、条件覆盖率和方法覆盖率{。具体采用哪些指标可以根据项目的实际情况来定Q以避免因过高的指标增加了代码开发h员的工作量而媄响了目整体的进 度?/p>

EMMA是一ƾ比较流行的开源Java试覆盖率分析工P支持cR方法、代码行、基本代码块{多U类型的试覆盖率分析,支持覆盖率分析l?果导Zؓ多种格式的报告,q用多U颜色来高亮昄不同的覆盖率状态。EclEmma是一Ƒ֟于EMMA的Eclipse插gQ方便在 EclipseIDE中进行测试覆盖率分析。如?Q在试用例写好后,可以在右键点L试类Q选择CoverageAs->JUnitTest?/p>

q行试覆盖分析

?.q行试覆盖分析

单元试跑完后,Coverage视图中会昄所选择的测试的覆盖率。双L开某一具体的类后,可以看到高亮昄的覆盖分析结果,如图10所 C。红色代表测试没有覆盖到该行Q黄色表C部分覆盖,l色的行表示该行在本ơ测试中被覆盖到?/p>

查看试覆盖分析l果

?0.查看试覆盖分析l果

在Coverage视图中可以通过点击鼠标右键测试覆盖分析的l果导出成需要的格式Q例如HTML?/p>

导出试覆盖分析l果

?1.导出试覆盖分析l果

?2昄了导出的report?/p>

试覆盖分析报告

?2.试覆盖分析报告

Z保证单元试的有效性和质量Q可以规定一个测试覆盖率的下限,例如所有的包和cȝ覆盖率必达?0%以上。不q值得注意的是Q不要单U追 求高覆盖率,要同时注意测试用例的质量Q如果测试用例本w就写的有错误,那么即ɋ试覆盖率很高也没有意义?/p>

步骤四:持箋集成

持箋集成(ContinuousIntegration)是利用一pd的工PҎ和规则,做到快速的构徏开发代码,自动的测试化Q来提高开?代码的效率和质量。利用自动构建工P随时都能把提交的代码构徏出来Q提供一个可以测试用的版本Q让用户和开发h员同时看到相同的功能Q尽早的发现问题 和错误,也可以尽快的得到试人员和用L反馈?/p>

要做到持l集成,p利用一pd工具Q把开发过E中的重复工?a class="fllink" target="_blank">自动?/a>。搭动的构徏服务?/a>Q?自动的进行单元测试和发布新版本,一个集成的服务器可以提供构E的l果报告Q自动通知开发h员构建结果,q且保存历史数据?IBMRationalTeamConcert(RTC)可以提供工作d的管理,目计划的安排,代码版本理控制Q自动构建可用版本,生成构徏l果?告。这些过E构成了目的持l集成过E,其中Q版本的自动构徏和代码的自动单元试是持l集成的关键q程QRTC在这些过E上提供了有力的支持?/p>

自动构徏

RTC提供了buildengine来负责构建buildQ首选,启动buildengineQƈ和RTC服务器徏立了q接。再创徏目?build定义。在q个定义中,需要设定编译哪?a class="fllink" target="_blank">模块的代码,需要蟩动哪个ANT文g来启动编译,和一些编译过E中的参数的?定。当q些都准备好了,~译对于目而言Q就变成一个简单的事情?/p>

可以看到Q通过在build定义上,点击h构徏Q就可以触发一ơ构E。选择需要的构徏参数Q这个过E就会在后台q行。每一个开发h员,?了稍许的代码改变和提交,都可以触发新的构E,来保证我们代码的有效性。申请一个新的构建的q程如图13、图14所C?/p>

甌一个新的构? src=

?3.甌一个新的构?/p>

构徏甌界面

?4.构徏甌界面

当构建结束后。RTC服务器会提供构徏l果报告。开发h员可以查询到q次构徏的详l信息?/p>

构徏l果

?5.构徏l果

整个开发过E中Q构建版本的q程应该是无数次的,通过每次构徏Q都可以得到当时代码的编译情况,q且可以得到一个可q行的Y件版本。在构徏定义 上,RTC支持讄构徏计划。定时自动的触发一ơ构建?/p>

构徏定义

?6.构徏定义

自动单元试

构徏可以自动了,重点提高代码质量的单元测试呢Q如果每一天的代码Q每一个版本的代码Q都已经通过了我们的单元试Q这h们就能对代码的质?有了基本的保证。在构徏脚本的自动调用过E中Q通过ANT的脚本,可以加上JUnitQEMMAQFindBugs的ANT脚本调用Q每一ơ的构徏Q都?以把q些查工作自动的q行一遍测试。这些测试都要生成测试结果报告,RTC不能提供q些报告的展C,可以利用Hudsonq个开源工P集成试报告 来方便查阅?/p>

自动试报告

?7.自动试报告

步骤五:代码评审和重?/strong>

代码评审(CodeReview)是Java目开发过E中的一个重要步骤,代码评审可以帮助发现静态代码分析过E中无法发现的一些问题,例如 代码的编写是否符合编码规范,代码在逻辑上或者功能上是否存在错误Q代码在执行效率和性能上是否有需要改q的地方Q代码的注释是否完整正确Q代码是否存?冗余和重复。代码评审还可以帮助新进入项目组的成员快速学习和了解目Q促q经验分享,同时也能保证目成员的良好沟通。代码评审主要包括两UŞ式,同 评审(PeerReview)和小l评?GroupReview)。同U评审主要指目成员间的互相评审Q小l评审是指通过召开评审会议Q项目成员一?寚w目代码进行评审?/p>

Z提高代码评审的有效性和效率Q可以借助一些外部工P比较常用的代码评审工hJupiter和CodeStriker。Jupiter?一Ƒּ源的Eclipse插gQ允许成员将评审意见定位到真实代码的具体行,׃代码评审的结果以XML文g的Ş式保存,所以可以把l果提交到版本管?a class="fllink" target="_blank">服务?/a>q?行共享。图18昄了用Jupiterq行代码评审的界面?/p>

Jupiter代码评审界面

?8.Jupiter代码评审界面

在代码评审Q务创建后QJupiter代码评审分成三个阶D,个h评审阶段(IndividualPhase)、团队评审阶D?(TeamPhase)和问题修复阶D?ReworkPhase)。在个h评审阶段Q评审成员将发现的代码问题或者缺陯录下来,每个问题都会作ؓ一个记 录保存在评审表格中。在团队评审阶段Q团队的全部或者部分成员会一起对个h评审阶段发现的问题进行定性,如果问题实存在Q就该问题分配l某个成员去?冻Iq在Jupiter中将该问题设|成相应的状态。在问题修复阶段Q团队成员会修复属于自己的问题,q将相应的记录设|成已解决等正确的状态?/p>

Codestriker是一Ƒ֟于Web的常用代码评审工P对代码的评审可以针对某一具体行,也可以针Ҏ个代码文Ӟ评审意见会被保存?a class="fllink" target="_blank">数据?/a>中。评审h员可以同时看到其他h的评论,代码作者也可以针对某一具体的评 论回复。Codestriker支持邮g通知Q还可以同版本控制服务器q行集成Q以跟踪和显C文件内容的改变。图19昄了Codestriker的界 面?/p>

Codestriker报告界面

?9.Codestriker报告界面

在实践中Ҏ有代码进行小l评审会比较ҎQ所以可以根据实际情冉|挑选一些核心代码进行小l评审,或者在目的前期安排较多的组评审Q等?目组的成员对代码评审的标准和要求有较好的理解Q进行代码评审的l验提高后,可以逐渐减少组评审的次敎ͼ从而达到大部分代码即只进行同U评审也能保 证很好的质量?/p>

通过代码评审发现的问题要通过代码重构及时解决掉,较小的不涉及多h代码的重构可以由目成员自己借助Eclipse的重构功能完成,不同目 成员写的实现相同功能的不同代码要通过讨论整合成公qcL者方法。比较复杂的或者比较高层次的重构工作,例如整个目层面的代码组lŞ式的改变需要由?个项目组共同讨论完成?/p>

l论

软g开发没有一成不变、万能通用的流E和ҎQ希望大家能从本文得到启发和收益Q结合您的实际项目特点,实践以上步骤和方法,q加以完善和?q,共同打造高效高质量的Java代码Qؓ您的目成功奠定坚实的基?/p>

@joe 2010-09-05 12:20 发表评论
]]>
IT目理的六U错误思维http://www.tkk7.com/freeman1984/archive/2010/09/05/331071.html@joe@joeSun, 05 Sep 2010 04:15:00 GMThttp://www.tkk7.com/freeman1984/archive/2010/09/05/331071.htmlhttp://www.tkk7.com/freeman1984/comments/331071.htmlhttp://www.tkk7.com/freeman1984/archive/2010/09/05/331071.html#Feedback0http://www.tkk7.com/freeman1984/comments/commentRss/331071.htmlhttp://www.tkk7.com/freeman1984/services/trackbacks/331071.html

错误一Q错误的需求调研阶D,D很多目永远无法l束!

在Y件行业,在界面设计没有正式展现给客户之前Q所有的工作都处于需求调研阶Dc其实徏{行业已l给我们做好了先例:客户买房子之前是先要看看h 房和模型的,什么都看不到这房子你敢C?除非你不是自׃!

而在我们所学的软g工程概念模型中,q是三个阶段Q需求调研、需求分析、概要设计?/p>

在客h他们惌理的业务模块以及与之相关的业务数据Q流E,表单交付你的时候,你千万不要把q个阶段定性ؓ需要调研结束,写出《需要规D?书》就可以了。大量的实践证明Q在概要设计阶段所衍生出来的需求工作量是之前的5~10倍,甚至更多Q因要看设计人员的业务沟通能力和建模水^?/p>

有实施经验比较丰富的目理人员ȝ_在中国实施Y仉目,必须以咨询方式展开Q要推出自己的方案,而不能完全按照客h提需求作目。这是一 U很好的解决思\Q但无法解决所有实施项目的N。这U解x案的前提Q要么项目实施者有成熟的业务模型,要么有成熟的产品(包含了成熟的业务模型)Q否 则是不可能做到的。但如果没有3~5q在同一行业Q同一领域的实施经验和理论ȝQ没有哪家IT企业能达到这L前提要求?/p>

其实得出q样l论的深层原因,是因为国内多C业管理思想不成熟,更谈不上完善的业务模型,所以客L思维一定程度是发散的,q未形成pȝ。甚臌 有些客户的领|脑子中有很多新鲜的点子,他都有可能想在企业信息化的实施过E中加进来,q对把控目范围和项目实施效果来_都可能是N的开始?/p>

所以,要做好实施项目,实施者必L很好的业务徏模能力,快速的l客户展C合理的软g原型软gDemo?/p>

误住:软g实施目Q一定要l用L到样板房软gDemoQ才需求调研结?

错误二:IT技术h员不需要掌握项目管?/strong>

有这U看法的Z在少数。根据观察,之所以Ş成这U看法,一是对目的真正概念不清晰Q二是对理的概능话了Q把理理解成了高深莫测Q非一般h 能做的事情。首先有必要普及一下项目的概念?/p>

寚w目有很多Zq定义,目理圣经PMBOKW三?2004?的定义是Qؓ创造某个独特的产品或服务,或完成某独特的Q务所做的临时性努 力。围l这句话PMBOK做了详细的解释和举例说明Q很严}Q想了解的请学习PMBOK。因为都是翻译过来的定义Q翻译得q于术语化很Ҏ把hl进去,?国内不排除已l拿到PMP认证证书的专业h士还搞不清楚目I竟是什么。笔者在q里只想用汉语最通俗的语a来说明什么是目和项目管理?/p>

目Q就是在限定的时间要人完成的事。记住三个关键字卛_把握Qh、时、事?/p>

目理是参与者用什?知识、技能、工兗方?来圆满地q好qg事?/p>

明白了这些,你就会明白从日常生活的吃喝拉撒到国家理Q处处都是项目,处处都需要项目管理,也就能明白每个h都需要项目管理,也就能理解学会了?目管理将会多么受益无IP娴熟q用目理思维无往不胜!

但需要提醒大家一点,现在的PMBOK是把传统刉行业、徏{行业、IT行业{多个行业领域的目理知识p合C一P大而全Q但针对性不够好Q?所以很多h觉得PMBOK理论化太强,学完了觉得很多东西没用。现在国际知名的另外一套项目管理认证,IPMP是按照工作岗位能力进行了分Q也没有针对 行业q行分解。所以,无论拿到PMP或者IPMPQ很多h都会有同L困惑。据了解QPMI已经准备做这L改进Q这是一个很好的消息?/p>

错误三:忘记目目标

你看到这个题目什么感?很多Z觉得q样的错误怎么会发?几乎没有Z认ؓ自己犯这个错?忘记目目标有两U情形:一是从开始接手项目就没弄 清楚目的目标是什?二是虽然清楚目的目标是什么,但却q着跟完成项目目标无兟뀁甚x害的事?/p>

时刻铭记目目标是项目管理很重要的一个思维Q项目所有的zd都围l这个展开。可是随着目的逐步开展,其是复杂项目:人多、事多、周期长Q很?目l理会逐渐因ؓ个h喜好而忘C目的大目标Q比较典型的有:技术出w的目l理会沉q于技术细节,大量旉花在学习新技术或者一头闷在解x术难??脾气火爆的项目经理会因ؓ很多不值当的事情大发脾气,把团队搞得乌烟瘴?心眹{爱面子的项目经理会因ؓ某个l员无意的顶撞而怀恨在心,从此ȝ?I小鞋,搞得团队拉帮l派Q毫不团l?q有更糟p的Q比如爱玩游戏的Q爱喝小酒的{等。所有这些,无论原因是自w不成熟Q还是管理经验、管理能力不Il?果都一P那就是项目出问题Q甚臛_败?/p>

目l理最重要的一Q务就是跟t与控制Q时L握项目方向,保证目计划得以利执行Q偏差控制在可控风险范围内。但目L有太多意外因素,?其是周期长的目Qh们常用夜长梦多来形容风险会随旉的g长而增加,所以项目经理一定时刻都要保持头脑清醒,寚w目无益的事情不做Q对目有风险的事情 更不能做?/p>

M目在开展过E中都会不断面对Z和诱惑,目l理一定要能明项目大目标Q才能清晰地识别哪些是ə目成功的机会,哪些是会l项目带来风险的 诱惑Q才会少走弯路,早日成功。项目管理者联盟,目理问题?/p>

人是需要不断被提醒的,q由人性决定。智慧的够不断的反省从而自我提醒,愚笨的h会被挫折、外界的警示不断提醒Q这Ş成了成功与失败的差异?/p>

错误四:计划不能?/strong>

怎样才能保证目成功?计划Q计划,再计划,q是目理的最佛_?所以,做项目管理的一般都知道如何~制目计划Qƈ且很多h能熟l的使用 Project工具Q知?0时或?0时法则、WBS和关键\径的概念。每个项目经理都会记住计划一旦Ş成,׃格按照计划去执行Q而不受某个h?某g事的影响q个原则Q也明白q样做不仅能够减大量资源的费Q品的质量也能得到保障。所以,很多目l理排斥Q甚xl改变计划。坚持原则,q貌?没什么错Q但真的q样?

要弄清楚一件事是否有必要做Q首先就得弄清楚两个问题Q一、这件事Z么要?二、做了有什么好?

那我们首先问一下编制计划的目的是什?我们知道计划是项目管理的最佛_践,计划是保证项目成功的一U手D和ҎQ做qg事只有一个目的,那就是ؓ 了保证项目成功,但前提是Q这份计划是周密的、可行的。严格执行一份周密可行的目计划才能保证目成功。很多项目经理记住了上面的严格执行原则,但忘?了这个大前提?/p>

W二个问题,计划有什么好?目理的计划方法,把项目活动、持l时间、所需资源有机地结合在一Pq且有严格的先后ơ序、里E碑和关键\径,?以清晰地提醒目所有成员在什么时_做什么事情,保证每个目d都得以执?通过对计划的执行跟踪Q项目经理可以清晰地了解目q展情况和偏差情况, 评估q及时有效的控制目风险Q从而保证项目的成功?/p>

明白了这两点Q我们再来看IT目。对多数IT目Q尤其是软g实施目Q启动时都存在范围不够明晎ͼ需求不定的情c只有到软gDemo产生Q?才可能需求清晎ͼ范围定Q这些情况就军_了IT目计划需要根据项目的实际情况及时q行修正。如何压~范围确定的旉Q早日制定出周密可行的计划,是Y 仉目的一个重要课题?/p>

制定一份周密可行的计划是项目经理优U能力的体玎ͼ其是WBS的制定,对复杂项目有很大隑ֺ。在?008奥运目的管理体会时Q项目专家曹蕑ְ 提到奥运会项目最隄一点就是WBS的制?参见PMU|站?008奥运目的访?。要保证目的成功,p保证目的每个活动都能得以顺利执行。所 以,在项目情况发生变化,在原有的计划基础上有需求变更时Q就要把新的d补充到计划中Q修正计划,保WBS的完_保计划周密可行Q之后的工作才是 严格执行?/p>

Z提一句,有些目l理会走另外一个极端:因ؓ需求不定Q所以不制定目计划。这同样是对计划的错误理解。即使计划不够周密,但它可以提醒我们 目的大目标是什么,保证目团队所采取的行动不偏离大方向。Q何一大的项目,都可以拆分成很多项目,WBS的渐q明l,也是目必须完成的Q务之 一Q所有Q务的持箋旉都是要估的Q即使不够准,臛_可以作ؓl验累积Qؓ今后的准估做了准备。因此,目的Q何阶D都一定要有计划?/p>

错误五:目一定要盈利

目一定要盈利Q这句话被无数IT目l理奉ؓ真理Q也注定了要创造很多悲?Z辑ֈq个目的Q很多IT目l理甚至都在悉心研究厚黑学,学习 用什么办法把弟搞得热情高涨Q比民工累,从而用最低的成本创造最大的利润?/p>

目理作ؓ战术层次的管理手D,一定要服务于战略层ơ的大方向。商场如战场Q有胜利׃有失败。ؓ了战略胜利,很多战役要诱敌深入,必须打|仗?败仗不要紧,关键要弄清楚败到什么层ơ,损失CU地步,明确本次战役的真实目标,再去打这场战役,׃做到驾轻qQ从而不至于到最后Ş成不仅损光| ,q未能诱敌深入的局面?/p>

开拓市场、占领市场、站E_场、挖掘市场,q是每个公司发展必不可少的步骤。很多项目,对公司来说都是ؓ了占领市场,甚至虎口夺食。这L目Q公 总战略层面首先要求的绝对不是盈利,而是如何能把市场占领Q而站EI目l理必须明白q个战略意图?/p>

q是项目管理最为重要的一个思想Q从q去的做好质量、时间、成本项目三要素的^衡,到现在满相兛_pMh的需求,所有的最佛_践和理论研究成果Q?都绝不会提倡走极端Q杀机取?利润只是目的一个目标,q且一定要明白有短期利润和长期利润之分Q过分单一q求利润的项目注定要p|Q过分追求利润的?怹不会长久?/p>

该花的钱不能省,不该q׃分也不要花,目l理把成本控制在合理的预范围内Q就是成本控制的成功。万万不可ؓ了把一个注定要赔钱的项目做得盈 利而想办法、绞脑汁压~成本,从而让l员加班加点Q玩命干z,到最后,目q完了,Z走光了,q极有可能因工导致项目质量不合格Q客户不满意Q?那就真的赔了夫h又折?

目l要能保持激情高效,不能懒散拖沓Q项目经理一定要把握好这个度Q绝不能走极端。^衡是一门艺术,也是展示目l理能力水^的一个重要标?

错误六:C了科学,忘记了有?/strong>

学以致用Q就怕ؕ用。无论是产品、技术还是管理方法,都存在ؓ了更先进、更U学而罔儡实,盲目q的现象,l果先进和科学的技术、工具不仅未提高 生效率Q却成了累赘Q这L情况到处都是Q在IT目中也为数不少?/p>

国内大量p|的ERP目是q类错误的典型。有人把ERP目归结Z把手工程Q意思是只有领导重视q推动才能成功。领导支持是目成功很重要的 一个条Ӟ但绝不是有领导支持就一定能够成功。有些项目就是领导决{失误盲目上的,从开始就注定目要失败。一个信息化目的实施,对很多企业来说就是一 场大的改革,Ҏ有员工从思维、技能到工作习惯{多斚w都需要进行调整。如果企业的员工素质不能跟上Q纵然有各种各样的培训,但不֑工基和学习曲U, 用户不能真正掌握全新的系l,l果只能增加用戯担,而生不了期望的效果?/p>

很多IT目l理在学习了一些新的技术后QL立刻在项目中实践Q而不Ml分析这些技术在q个目中是否需要,是否适合。IT技术日新月异,不断 有新的理提出来,被翻译引q到国内。有些项目经理在一知半解,对这些技术还不是很熟悉的情况下,敢向h吹嘘他所掌握技术的U学性、先q性,q而强?要求在项目中实践。这可能是甲方的目l理Q也可能是乙方的目l理。因为技术选择错误D目p|的例子在国内q去有,现在也还?l对不可准备不Q?大范围引入全新的技术,待到目旉q去一半了Q才发现选择的技术不适用Q那时候一切都晚了。掌握Q何新东西都有学习曲线Q项目的旉限制是项目经理必?时刻牢记的要素,把握不好׃l项目带来极大风险?/p>

涉及到具体的IT目理QPMBOK的知识体pd谓博大,q有一些其他新的项目管理工P不能说不先进Q但是哪些知识、工兗方法适合本项目,需 要项目经理根据实情,认真分析后进行筛选用?/p>

U学、先q、好用等{修饰头衔这些都不是要选择的首要理由,需要、适用和有效才是首要考虑的事情。很多IT目l理因ؓq轻Q初生牛犊不怕虎Q胆?大,勇气I敢于在实践中引入新的工具、方法。敢于尝试不是坏事,但试验的风险一定要控制好。对于项目经理来_所有的决策都要围绕目目标q行。项目经 理的首要d是保证项目成功,如果同时能引入新的技术、工P增加l员的知识技能,提升目l工作效率,提高产品的质量和可靠性,l对是锦上添花,但绝?不能Z锦上添花而导致项目失控甚臛_败,捡了芝麻Q丢了西?


转蝲自:csdn http://java.csdn.net/a/20100127/258541.html


@joe 2010-09-05 12:15 发表评论
]]>
վ֩ģ壺 ѹۿaëƬվ| Ƶѹۿ| õ788Ƶ| 츾AV߹ۿ| պëƬѿ| ۺɫ| ۺϾƷվ| ھƷƵѡ߹ۿ| ƵƵ| պƵ߾ƷƵѹۿ | ɫվѹۿ| ҹAVר߲ | վWWW߹ۿ| AVһۿ | þþƷav| ޵һվƵ| ձĻ| ޾Ʒٸ30p| պƵ߾ƷƵѹۿ| Ʒva߹ۿ| ޾Ʒþþþþ| һŮ18ëƬ| һƵ߲| ɫƷ88ɫ¶| 18վƬѹۿ| ޹Ʒþ| ҹþþþþ| 40ձ| һëƬƬƵֻ| ˳ɵӰ| һëƬaŮ˴̼Ƶ| þþŷղAV| avպavŷv| ߹ۿѸƵ | ޹Ʒyw| 40ձ| þùƷ2020m3u8| ˾ƷۺƵ| avɱվ| ޾Ʒ| ޾ƷŮ߹ۿ|