千姿百态项目经理3——“牛逼”项目经理7

质量管理:对日外包项目的严格把控
本文详细阐述了在对日外包项目中,通过文档化、评审、测试、限定代码行数、变更记录和工具使用等方法来确保工作产品的高质量。强调了文档在消除沟通误解、统一项目语言方面的作用,评审和测试流程的实施,以及如何通过工具提高效率和质量。

故事六:质量管理

对每个定制项目来说,工作产品的质量的高低都是根据客户需求决定的,要求高,给钱多的,质量就高,要求低,给钱少的,质量就低,这个项目也不例外。做过对日外包项目的人都知道,日本人对质量的要求特别严,尤其是那些银行证劵类的软件,上线之后的bug数直接影响到能拿到多少回款,多出一个bug就会少拿一笔钱。因此试运行阶段,对全部项目组成员来说,都像顶了个避雷针似的,不定哪块云就能来个雷炸着自己,虽然不至于直接被罚款,但是加班和挨骂甚至半夜被从家里叫来都是很可能的,这段时间,要求全员24小时随传随到。为了避免后面的这些问题,项目的质量从开始时就要求的很严,下面详细说说都是怎么做的。

一、文档化

概要设计、详细设计、测试用例、概要设计的评审、详细设计的评审、测试用例的评审全部都有一一对应的文档,我相信能出这么多文档的项目没几个。详细设计到伪代码的程度,测试用例要求所有分支全覆盖。

当然,单纯有文档是提高不了质量的,但是文档的存在,降低了沟通难度,很大程度上消除了误解、理解上的差异并在形成了共同语言,比如说到“铭柄”这个词的时候,没人知道是什么意思,但是项目组中的人都知道这是一个功能模块。

二、评审

所有的工作产品都必须经过评审,评审采用会议评审和交叉评审两种方式。

最先产生的工作成果采用会议评审的方式,把大家都可能出错的地方找出来,统一改正,会议评审一两次之后,改成交叉评审,这样可以提高工作效率。

所有的评审问题都要记录下来,形成评审表,需要横向展开的问题,进行统一管理。

三、测试

单元测试,连接测试,系统测试,monkey测试,当然还有疏通测试,“V”模型里提到的所有测试,在这个项目里都存在,而且所有的测试都有文档化的测试用例,有测试过程记录,测试结果记录,所有的bug都被记录,被分析,bug中描述不清楚的用截图表示。

在评审和测试中,单纯因为手误或者马虎出现的bug是很难被原谅的,如果是多个人出现相同或类似的单纯错误的话,则认为是大家都可能出现的,要所有人把自己的代码都查一下。

四、限定代码行数

将每个模块的复杂度控制在一定范围内,超出范围时,进行拆分,以降低开发和查找bug的难度以及出错的概率。

五、变更记录

不管是代码也好,文档也好,凡是有修改的地方,都要有变更记录,而且原来的内容不能直接删掉,要保留。变更记录中要写明是谁在什么时间为什么做的修改。

六、工具

这个前面也已经提到过了,基本上都是项目组自己开发的小工具,用来提高工作效率和质量的。

这些管理质量的方法,不能算是这个项目经理的原创,只是这个项目中是这样做的,而且不仅这个项目,很多对日外包项目都是这样管理的。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>CSS-盒子浮动与定位</title> <style> body{ background-image: url(pic/bg1.jpg); font-family: Verdana, Geneva, sans-serif; font-size: 13px; color: darkgray; line-height: 1.5; margin: 0; } #father{ width:900px; background-color:white; background-image:url(pic/logo.gif); margin-left:auto; margin-right:auto; height:150px; background-repeat:no-repeat; background-position:right top; height:1100px; } #intro{ width:300px; border:1px gray dotted; margin:5px; padding:5px; float:left; } #intro img{ width:280px; height:220px; border:1px gray solid; } #scene{ width:555px; border:1px gray dotted; margin:5px; padding:5px; float:right; background-image:url(pic/bg3.jpg); margin-top:150px; position: relative; z-index: 1; } #scene img{ width:200px; height:170px; border:5px gray solid; float:left; margin-right: 10px; margin-bottom:10px; } #scene1,#scene2{ clear:both; width:450px; border-top:1px skyblue dashed; margin:10px auto; padding-top: 10px; } #food{ float:left; width:300px; border:1px gray dotted; margin-left:5px; padding:5px; clear: left; } #food img{ width:280px; height:220px; border:5px gray solid; } #pic6{ position:relative; top:150px; } .title1 h3, .title3 h3 { text-indent: -9999px; height: 0; margin: 0; padding: 0; } .title1 { background-image: url(pic/title1.gif); background-repeat: no-repeat; height: 70px; margin-bottom: 10px; } .title3 { background-image: url(pic/title3.gif); background-repeat: no-repeat; height: 40px; margin-bottom: 10px; } #extra-img { position: absolute; top: 500px; left: 500px; width: 150px; height: 100px; background-image: url(pic/bg0.gif); background-repeat: no-repeat; z-index: 2; }body{ background-image: url(pic/bg1.jpg); font-family: Verdana, Geneva, sans-serif; font-size: 13px; color: darkgray; line-height: 1.5; margin: 0; } #father{ width:900px; background-color:white; background-image:url(pic/logo.gif); margin-left:auto; margin-right:auto; height:150px; background-repeat:no-repeat; background-position:right top; height:1100px; } #intro{ width:300px; border:1px gray dotted; margin:5px; padding:5px; float:left; } #intro img{ width:280px; height:220px; border:1px gray solid; } #scene{ width:555px; border:1px gray dotted; margin:5px; padding:5px; float:right; background-image:url(pic/bg3.jpg); margin-top:150px; position: relative; z-index: 1; } #scene img{ width:200px; height:170px; border:5px gray solid; float:left; margin-right: 10px; margin-bottom:10px; } #scene1,#scene2{ clear:both; width:450px; border-top:1px skyblue dashed; margin:10px auto; padding-top: 10px; } #food{ float:left; width:300px; border:1px gray dotted; margin-left:5px; padding:5px; clear: left; } #food img{ width:280px; height:220px; border:5px gray solid; } #pic6{ position:relative; top:150px; } .title1 h3, .title3 h3 { text-indent: -9999px; height: 0; margin: 0; padding: 0; } .title1 { background-image: url(pic/title1.gif); background-repeat: no-repeat; height: 70px; margin-bottom: 10px; } .title3 { background-image: url(pic/title3.gif); background-repeat: no-repeat; height: 40px; margin-bottom: 10px; } #extra-img { position: absolute; top: 500px; left: 500px; width: 150px; height: 100px; background-image: url(pic/bg0.gif); background-repeat: no-repeat; z-index: 2; }body{ background-image: url(pic/bg1.jpg); font-family: Verdana, Geneva, sans-serif; font-size: 13px; color: darkgray; line-height: 1.5; margin: 0; } #father{ width:900px; background-color:white; background-image:url(pic/logo.gif); margin-left:auto; margin-right:auto; height:150px; background-repeat:no-repeat; background-position:right top; height:1100px; } #intro{ width:300px; border:1px gray dotted; margin:5px; padding:5px; float:left; } #intro img{ width:280px; height:220px; border:1px gray solid; } #scene{ width:555px; border:1px gray dotted; margin:5px; padding:5px; float:right; background-image:url(pic/bg3.jpg); margin-top:150px; position: relative; z-index: 1; } #scene img{ width:200px; height:170px; border:5px gray solid; float:left; margin-right: 10px; margin-bottom:10px; } #scene1,#scene2{ clear:both; width:450px; border-top:1px skyblue dashed; margin:10px auto; padding-top: 10px; } #food{ float:left; width:300px; border:1px gray dotted; margin-left:5px; padding:5px; clear: left; } #food img{ width:280px; height:220px; border:5px gray solid; } #pic6{ position:relative; top:150px; } .title1 h3, .title3 h3 { text-indent: -9999px; height: 0; margin: 0; padding: 0; } .title1 { background-image: url(pic/title1.gif); background-repeat: no-repeat; height: 70px; margin-bottom: 10px; } .title3 { background-image: url(pic/title3.gif); background-repeat: no-repeat; height: 40px; margin-bottom: 10px; } #extra-img { position: absolute; top: 500px; left: 500px; width: 150px; height: 100px; background-image: url(pic/bg0.gif); background-repeat: no-repeat; z-index: 2; }body{ background-image: url(pic/bg1.jpg); font-family: Verdana, Geneva, sans-serif; font-size: 13px; color: darkgray; line-height: 1.5; margin: 0; } #father{ width:900px; background-color:white; background-image:url(pic/logo.gif); margin-left:auto; margin-right:auto; height:150px; background-repeat:no-repeat; background-position:right top; height:1100px; } #intro{ width:300px; border:1px gray dotted; margin:5px; padding:5px; float:left; } #intro img{ width:280px; height:220px; border:1px gray solid; } #scene{ width:555px; border:1px gray dotted; margin:5px; padding:5px; float:right; background-image:url(pic/bg3.jpg); margin-top:150px; position: relative; z-index: 1; } #scene img{ width:200px; height:170px; border:5px gray solid; float:left; margin-right: 10px; margin-bottom:10px; } #scene1,#scene2{ clear:both; width:450px; border-top:1px skyblue dashed; margin:10px auto; padding-top: 10px; } #food{ float:left; width:300px; border:1px gray dotted; margin-left:5px; padding:5px; clear: left; } #food img{ width:280px; height:220px; border:5px gray solid; } #pic6{ position:relative; top:150px; } .title1 h3, .title3 h3 { text-indent: -9999px; height: 0; margin: 0; padding: 0; } .title1 { background-image: url(pic/title1.gif); background-repeat: no-repeat; height: 70px; margin-bottom: 10px; } .title3 { background-image: url(pic/title3.gif); background-repeat: no-repeat; height: 40px; margin-bottom: 10px; } #extra-img { position: absolute; top: 500px; left: 500px; width: 150px; height: 100px; background-image: url(pic/bg0.gif); background-repeat: no-repeat; z-index: 2; } </style> </head> <body> <div id="father"> <div id="intro"> <div class="title1"><h3>阳朔概况</h3></div> <img class="pic1" src="pic/4.jpg" /> <p >阳朔县位桂林市区东南,隶属广西桂林市,位于漓江西岸,风景秀丽。建县始于隋开皇十年(公元590年),距今已1400余年。县城距桂林市区65公里,居住着汉、壮、瑶、回等13个民族。</p> </div><!--intro end--> <div id="scene"> <div class="title2"><h3>阳朔风光</h3></div> <img class="pic2" src="pic/2.jpg" /> <p class="text">“桂林山水甲天下,阳朔山水甲桂林”,高度概括了阳朔的自然风光在世界上所占有的重要位置。“山青、水秀、峰奇、洞巧”,为天下四绝。阳朔百里山川,处处奇山秀水,自然景观与人文景观交相辉映,被誉为“中国旅游名县”。</p> <div id="scene1"> <div class="title21"><h3>阳朔漓江景区</h3></div> <img class="pic3" src="pic/1.jpg" /> <p>这一景区江水清澄见底,宛如罗带的漓江蜿蜒于苍翠雄奇的群山之间,人称“百里漓江,百里画廊”。江边名山密集、千姿百态、翠竹丛丛,村落屋宇掩映在绿树丛中,构成一幅美丽的山水长轴,宛若一道千回百转的画廊。县境自杨堤冠岩村顺江而下,主要景点有:桃源仙境、浪石胜境、仙人推磨、绣山彩壁、鸳鸯戏水、九马画山、七姐下凡、螺蛳山等二十多处。乘舟游览这一景区,好似遨游仙宫,如入梦境,“分明看见青山顶,船在青山顶上行”。</p> </div><!--scene1 end--> <div id="scene2"> <div class="title22"><h3>遇龙河景区</h3></div> <img class="pic4" src="pic/3.jpg" /> <p>遇龙河是阳朔县第二大河,全长42.5公里,至书童山汇入漓江。河两岸奇峰秀丽。竹木苍翠、水质清澈、景色宜人。主要景点有:犀牛塘、水厄风光、五指山、朝阳寨、仙桂桥、遇龙桥、归义古城遗址、汉墓群、东晕岩、八仙过海等近20处。遇龙河田园风光旅游,最适宜采用三、五成群结伴徒步的游赏方式。遇龙河水清见底,一切都是静悄悄的,偶有飞鸟鸣聚,水车吱吱呀呀,旅游者可感受真正“诗境家园”的意韵。</p> </div><!--scene2 end--> </div><!--scene end--> <div id="food"> <div class="title3"><h3>美食</h3></div> <img class="pic5" src="pic/7.jpg" /> <p>漓江啤酒鱼:不吃不知道,一吃吓一跳,大名如雷贯耳,如果不试一下就真的枉费到此一游。啤酒鱼有点像川菜中火锅鱼的做法,先把鱼在油里煎一煎,再放啤酒及各种调料烧制而成。烧的器具很特别,鱼放在一个平底的盘子里,盘子下面是一个盆子,放了些水,再下面才是火,而不像是川菜火锅直接将锅放在炉火上面。这样上面的鱼不易烧糊且受热均匀,入口果然鲜辣可口,无一丝鱼本身的腥味。对了,一定要吃带鳞的,正宗的啤酒鱼,鱼鳞都炸得非常脆。好吃极了。</p> </div><!--food end--> </div><!--father end--> </body> </html> 为什么bg0不能显示
最新发布
11-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值