第一篇:程序员如何承接软件外包项目,你是怎么做判断的呢
程序员如何承接软件外包项目,你是怎么做判断的呢
随着现在外包的软件项目不断增长,但随之而来的,承接外包的软件公司、软件团队也越来越多,包括很多个人SOHO一族也加入到承接软件的竞争行列中来 了,因此现在对于软件项目的争夺也很激烈。有很多人不知道上哪里去争取项目,总是抱怨没有项目做;也有的人虽然编程技术不错,但是对于与客户谈项目却是一 窍不通,结果应该拿到的项目也拿不到手;也有的虽然已经接到了项目,却发现在实施开发的时候遇到好多从来没有遇到过的问题。作为一个多年从事外包项目接单 的软件开发人士,我想从以下几方面谈谈我的经验,希望对大家会有所帮助。第一点,到哪里接项目
软件团队或SOHO最为关心的一点是在哪里可以找到项目做,也就是到哪里可以找到有外包需求的客户。对于一般人来说,广交朋友然后通过熟人介绍还是 接项目的第一途径,但这要求你的朋友或熟人要在企业或公司里有比效重要的管理位置,对于像那些每天只能是埋头写代码的程序员这显然是不太现实的。所以大家不能等着项目来找你,而是要主动的出击去找项目。
现在网上有很多软件外包网站,在这里你可以找到不少的软件外包信息。比如GAF(即Get A Freelancer-是目前国外最流行的外包站点)上就有大量的软件外包信息。不过这里每天外包的项目虽然很多,但竞争也很激烈。一般一个外包信息发出后一天内就会有无数个竞争者(很多印度阿三在和你拼报价),所以能第一时间与客户取得联系是非常关键的。因为客户一般都是先入为主的,一般来说,如果第一个谈项目的人他觉得满意 了,就会对其他的竞争者不再予以考虑,所以你要经常上网站上看看有什么最新的项目,并立即与项目的发包方取得直接的联系。其他比如Elance、GetACoder、ScriptLance、汇新云等上也有很多外包的信息,大家可以自己上去看看。
是不是第一个联系了客户就高枕无忧了呢?也不完全是这样的。前面说过了,一个项目总是有很多人去竞争,就算是你抢先联系了客户,但可能后来又有不少 人也同样联系了他,而客户在这种情况下一般是处在比较犹豫的情形之中,这时,你就要经常不断地联系客户,不断地征询客户的意见,询问客户的项目需求,把你对项目的理解也经常与客户交流。这样,客户会觉得你比较有诚意来接这个项目,就会比较倾向于把项目交给你来完成。有时,与客户拉拉家常,也会拉近你与客户 之间的距离。说不定你会意外发现客户原来还是你的老乡,那就更好谈了。总之,如果你想要想争取到项目,就要经常不断地与客户保持联系,直到最终达成意向。第二点,如何与客户谈需求
接项目最重要的一步是与客户谈需求。客户对软件的需求是项目规划和实施的根本,所以在与客户谈需求时,一定要让用户将所有的想法尽可能的阐述清楚,并把所有的要求罗列出来。这时候不应该害怕“勾引”起客户的潜在需求而增加设计开发的工作量。而应该直接明白地要客户把项目的要求一条条地列出来。这时先把条理、归纳、分析先都扔到一边去,用纸笔将用户最原始、最完整的要求准确地记录下来。假如项目在你对客户的需求没有完全了解清楚的情况下就匆匆上马,那么就会随时发生意想不到的变更,轻则使项目延期或超出预算,重则使得原来已经做好的软件要彻底推倒重来。
所以我们在实施项目之前应该深入了解和挖掘客户需求,对某些不明确的需求要与发包方反复进行讨论,对于项目实施过程中的需求变更要规定处理办法,并 形成项目的最终需求。在需求分析阶段,接包方首先对发包方的需求认真分析,然后通过业务建模、会谈、问卷、需求会议等方式收集客户完整需求,形成文档,然后经过客户讨论、客户审查、文档修订等多次反复的过程。有一点需要注意,即使双方谈的很投缘,在讨论需求时也一定要详细周到,精确到每一条不能再划分的软 件功能为止。要消除客户的疑虑-作为客户,他对于项目的承接者总是存在各种疑虑。比如,这个项目究竟承接方有没有能力开发啊?项目组人员是否有这方面的经验?是否作过类似的产品,是否有这方面的技术能力?会不会只是骗了预付款就开溜啊?最后完成的项目能不能达到自己的要求啊?我们作为承接者,就是要千方百计打消客户的这种疑虑。比如,你要经常准备好一些成功的案例和以前的项目的DEMO,就是把你以前成功完成过的项目,做成一个DEMO给客户看,让他觉得你是有能力完成类似的项目的。俗 话说,事实胜于雄辩,把你以前做过的类似的项目DEMO给他看,好过你一遍遍空口的承诺。因为软件开发的过程中谁也不能保证一点问题不出,相比较而言,一 个有经验的开发人员会更容易得到客户的信任。因为你已经有和客户的项目功能接近的案例,无疑会缩短开发周期,技术上有更好的保障,因此客户也更乐于把项目 交给你。所以,程序员平常必须多花点时间和精力,搜集整理以前自己做过的项目案例,并把它们分门别类地整理出来,遇到同类项目的客户,就可以给客户进行演 示,这样客户就会放心把项目交给你了。另外,把团队组成人员、技术能力、经验等客户看重的东西整理出来并给客户看,也能够对争取到项目起很大的作用。
第三点,如何合理地报价
在完全了解客户的需求后,下一步就是要确定一个合理的报价。接包方要从跟客户的交谈中尽量地了解出客户的准确意思,思考客户想要的是怎样的一个软 件,项目复杂的程度多大,客户的要求有多高,客户的性格如何,能够接受的价格范围等等,这些因素对于软件项目的报价都是密切相关的。如果客户要的是一个小 型的软件系统,不太苛求有多全面的功能,只要满足某一方面的需要,并且客户又是一个比较随和的人,那么项目可以报一个接近成本的价格;相反如果客户要求的 是一个面面俱到的管理系统,需要有各方面的功能,缺一不可,并且客户又是那种对项目要求严格苛刻,绝不变通的人,那就要充分考虑各种不稳定的因素,报一个比较高的价格。
在很多的情况下,客户在跟接包方谈项目之前,心理都已经有一个价格底线。如果要投入的费用超过了客户的预算范围,客户将不再与你谈该项目,他会转而 找其它软件团队商谈。所以跟客户谈项目的过程中要迅速地思考客户需求的真正含义,能够通过某种转换和变通,把客户对于技术的要求与自己团队的技术力量可以 接受的价格相对比,从而得出一个双方都能接受的报价。在与客户的谈判当中,灵活变通是成功的关键之一。当然并不是所有的客户都可以通过变通而满足,遇到客 户不认同项目费用的情况一定要处之泰然,真诚地为客户解释,把客户的需求细化为技术上的要求给他分析,让他同意你的报价的合理性。即使客户对编程技术不是 很了解,但经过你的细致的分析后也会对你的报价表示认同的。第四点,如何组织团队
由于客户的需求是不同的,因而项目也是各种各样的。有网站设计项目、也有软件设计项目,要求使用的编程语言也是多种多样的。即使是在一个项目中,比如说网站制作的项目中,也有着前台的美工设计和后台程序的编写的分工。这些工作如果全部交给一个人去作那是绝对完成不了的。即使是一个小的团队,也不能保证所有的人才都齐备。因此最好就是自己把项目初步设计好,然后找合作伙伴共同开发,自己总体掌握整个项目的全部进度。如果在身边没有好的合作伙伴的话,网上也能找到不少可以合作的伙伴。
第五点,如何能收到项目款 这是整个项目中最后也是最难的一个环节。即使你的项目做得再好,如果没有收到款,那你前面的一切努力都等于是零。要想项目能顺利地收到款项,那么从项目未开始之前的谈判阶段就要对这一点加以注意。首先要判断对方是否是真心外包项目。这里有几点经验拿来给大家分享一下:如果你看到项目中说 “请提供完整的解决方案和成功案例发到某某邮箱”,这应该只是想套取设计方案而已,发几张你们公司或团队的推介广告和报价单给他即可。还有的客户张口就要 源码要设计文档设计方案的,这种人目的性太强了,如果你真给了他就再也不理你啦。还有的外包方死活不肯介绍自己,不肯告诉自己是谁、怎么称呼、怎么联系、是什么公司、做什么业务的,与这种连最基本的诚信都没有的客户就根本没有必要谈下去。其次是判断对方是否有充足的资金和实力,项目要求是否合理(技术、周 期等各方面)。这个可以在需求的谈判中可以有意识地来加以探明,如果对方的项目很大却老是强调项目非常简单,这应该是不想付足项目款;有的发包方坚持不肯给预付款,老是要求项目完成后再交全部款项,这应该是没有诚心付款。还有的项目要30天才能完成却只给几天的开发时间,这种项目外包方也是很值得怀疑的。
对于软件团队或个人SOHO族来说,由于不是公司,对方对于我们的信任度不会很高,所以对于大的项目一定要采用合同方式,这样出现问题才好解决。在合同中,最好订清楚分阶段来付款,这样有利于分散风险。比如,一般要求合同订好后先交30%的定金,项目进行到一半后待客户验证后交50%的项目款,全部项目完成并交付后再交清全部款项。这样做对于客户来说也比较好控制项目的进度,因此对方也比较容易认同并接受。以上谈了软件团队或个人在承接软件项目时应该注意的几个关键问题,其实还有很多问题由于文章的篇幅所限没有涉及。比如对于项目的选择,有的人大的项 目做不来,小的项目又不愿做。结果到头来什么项目都承接不到。因此一开始要把自己的期望值放低一些,先从一些几百元的小项目做起,有了一定经验后再接一些 大项目,这样循序见进才能不断进步。
第二篇:软件项目外包合同
软件项目外包合同
甲方:_________________(个人)
身份证号码:______________________ 乙方:_________________(个人)
身份证号码:______________________ _____________(个人)(以下称乙方)受________________________(以下称甲方)|委托进行________________________的开发工作。双方本着相互合作、互惠互利的原则,共同协商达成如下协议:
一、项目名称:
二、内容及要求:
1.开发内容:根据甲方的要求,乙方在规定时间内完成“______________”的开发,该系统的设计要求如下: l
主要功能:
根据需求设计进行项目的开发以及测试的工作。具体工作由甲方分配。l
系统运行环境包括:(1)(2)
2.开发时间:
(1)
启动日期:甲乙双方签字盖章之日即为项目正式启动日期;(2)
完成期限:自项目正式启动,在__工作日内完成。
三、双方权利义务: 1.甲方:
(1)
甲方有权利督促乙方按规定时间完成项目开发,有增加或修改内容双方需另行协商解决;在不影响进程的情况下,对于甲方的小规模变动的需求,乙方必须满足;若出现大幅度的变更,则甲乙双方商议延长开发周期。(2)
甲方完全拥有________________________系统的所有权,包括使用权、著作权等所有权利;(3)
甲方应当按照协议,按时向乙方支付开发费用;(4)
甲方有责任对本协议的内容进行保密;
(5)
甲方有责任对乙方的软件开发技术进行保密,在未经乙方书面许可的情况下,不得向第三方泄露。(6)
甲方有责任保密乙方的个人信息,不得向第三方泄露。2.乙方:
(1)
乙方有责任按甲方的要求在规定时间内完成项目开发,完成需要开发的内容;
(2)
在项目开发完毕之后,在乙方对甲方提供的维护服务期之内,由于甲方设计变更而导致______________________的变更,若变更范围在本合同所规定的功能范围之内,乙方有义务免费为甲方修改变更内容;(3)
乙方有责任对本协议的内容进行保密;
(4)
乙方有责任对与甲方项目的接口规范进行保密,在未经甲方书面许可的情况下,不得向第三方泄露;
(5)
乙方有责任在项目验收合格完成之后,向甲方提供__个月的免费维护服务,此维护仅指软件bug的修改以及小范围的功能性改动;
(6)
乙方有责任自行准备软件开发所需的硬件设备、开发资料及语音sdk.四、费用和支付方式:
1.费用:此项目费用合计为________元人民币 2.支付方式:(1)
第一阶段:
在合同签订之后的__个工作日内,支付乙方_______元人民币。(2)
第二阶段:
在甲方整体项目开发完毕后__个工作日内完成测试验收,并向乙方提供验收合格报告。同时,乙方将软件设计相关文档交付给甲方,甲方在__个工作日内支付乙方______元人民币。(3)
第三阶段:
在项目开发完毕6个月后的__个工作日,甲方向乙方支付余款_____元人民币。3.违约责任:
(1)
甲方有责任按期支付乙方费用,如因甲方自身原因,未能按时交付,则每延期一天,甲方将额外支付乙方总费用的0.5%作为补偿;
(2)
乙方有责任按期向交付甲方源代码和设计文档,实现项目中的所有功能,如因乙方自身原因,未能按时交付,则每延期一天,甲方将扣除乙方总费用的0.5%作为补偿。如确因甲方原因,造成乙方未能按时交付,则乙方不承担由此造成的甲方的损失。
五、适用法律:
本协议按中华人民共和国法律解释。
六、仲裁
对在本协议履行过程中出现的争议,双方本着友好协商的原则予以解决,如协商不能解决时,合同的任何一方可将争议提交本地仲裁委员会,并按该委员会的仲裁规则进行仲裁。仲裁决定对双方都有约束力。争议进行仲裁期间,除争议事项外,甲乙双方应继续履行各自本合同中规定的义务和行使权利。
七、甲乙双方指定联系人及联系方式 甲方: 联系人: 联系电话:乙方: 联系人: 联系电话:
若甲乙双方变更联系人,需要做出书面通知以告知对方。
八、其它:
本合同壹式贰份,双方各执壹份,签字盖章有效。甲方:
代表签字(盖章):
日期:2007年____月____日乙方: 代表签字(盖章): 日期:2007年____月____日
第三篇:软件项目外包合同
掌中宝软件项目外包合同
软件项目外包合同
合 同 号: 合同名称:
甲方:
第一条总则
1)甲方选择乙方为其开发软件系统,乙方将在甲方规定的时间内,根据甲方要求分段为甲方开发软件系统。2)甲、乙双方经友好协商,根据《中华人民共和国合同法》等有关法规,就乙方承担甲方
信息系统开发项目事宜,达成以下协议条款。本合同为第阶段系统开发的合同书。3)本合同中所用术语的定义如下:
服务 资料 规范 任务
由乙方提供的项目管理、需求分析、软件开发、测试,以及咨询、计划、实施、培训、安装、调试、维护、升级等服务。由乙方向甲方提供的系统说明文件、使用手册等。
信息系统在功能、操作、环境及性能等方面要求的周密而完整的说明。为完成“合同范围”所述服务而进行的相关活动。地址:邮编:510000 联系人:
电话:(86-20)87123456 传真:(86-20)87123456
乙方:(公司名称)
地址: 邮编: 联系人: 电话: 传真: 开户银行: 帐号:
第二条合同范围
乙方按照《用户需求书》的要求,向甲方提供在《工作说明书》中所列明的服务。第三条价格及付款方式
1)合同总金额为RMB¥万元,计人民币圆整,作为系统的开发费用。2)甲方分期向乙方支付以下款项:
(1)本合同签订后日内,甲方向乙方支付合同金额的,计人民币
圆整;
第 1 页
(2)软件需求开发说明书确认后%,计人民币圆整;
(3)软件按合同规定的标准验收合格之后日内,甲方向乙方支付合同金额的,计人民币圆整;
(4)剩余合同金额的,计人民币作为软件质量保证金,于软件验收
合格之后日内支付。
(5)甲方向乙方支付的费用,除另有规定外,所有费用的支付币种为人民币(¥),由甲方按
本合同规定的付款方式以电汇或支票划入乙方指定的开户银行帐户中。
(6)双方同意各自分别支付因执行本合同而发生的有关税费。
第四条工作环境
1)为了实施附件《工作说明书》中确定的工作任务,甲方同意乙方人员遵照甲方的管理规
定进出指定用户的工作场所。
2)甲方按照附件《工作说明书》中应向乙方提供的物品所确定的日期和地点提供相应的物
品。乙方在实施工作计划中和结束工作任务时,应保证物品的状态与接收时一致(正常
耗损除外),并在工作结束时将这些物品归还甲方。
3)乙方提供的任何服务要求使用甲方所提供的硬件、软件和其它物品,甲方应保证:拥有
必要的许可、证明或其它文件。确保在本合同实施过程中和乙方在提供《工作说明书》
中认定的服务时,有关物品可以被移动、使用、复制、修改、翻译、分发和(或)与其他
物品组合,而不会侵犯第三方的权益。
第五条变更
1)任何一方要求对合同内容进行变更时,所有的变更要求都必须以书面形式提交并经双方
签字同意。
2)对合同内容的任何变更都可能导致对预定计划、可交付资料或费用的变更。根据变更要
求的范围和复杂程度,乙方应对实现变更要求的工作而相应增加或减少收取费用,并将
预计发生费用以书面形式通知甲方,待甲方确认后执行。
第六条知识产权约定
1)乙方向甲方提供的源代码的约定见《工作说明书》。
2)除非另有规定,本合同中乙方向甲方售出的产品(包括源码、程序、文件、文档资料),所有权和版权属乙方。未经乙方许可,甲方不得公布文件、源码,不得复制、传播、反
编译、出售、出租或者许可他人使用其相关的程序、文件、源码和反编译等。
3)乙方保证所售出的产品享有合法的权利,没有侵犯任何第三方的权利。
4)甲方只能按乙方的规定享有相关产品的使用、升级、开发、转让等权利。如果甲方违反
乙方的规定和国家法律规定,应承担相关的法律责任。
第七条保密
1)双方不得向第三者泄露本协议的任何内容。
2)双方按本合同规定相互提供和提交的全部文件资料,凡涉及需要保密的,以预先说明的有关条款为据。并且任何一方在没有经过另一方书面同意的情况下,不能将另一方的保密资料(如技术资料、用户信息)透露给第三者。
第八条合同的解除
1)任意一方欲提前解除本合同,应提前通知对方,经双方协商签字同意后方可解除。甲方
要求解除合同,无权要求乙方返还甲方向乙方已支付的费用,并应对乙方遭受的损失承担赔偿责任;乙方要求解除合同,应返还甲方已支付的费用,并赔偿由此引起甲方的损失。
2)订立本合同所依据的客观情况发生重大变化,致使本合同无法履行的,经双方协商同意,可以变更本合同相关内容或者终止合同的履行。
第九条违约责任
1)双方在执行本协议过程中,任何一方违反本协议之约定,均为违约。违约方除向守约方
赔偿外,还须承担另一方为取得此等赔偿而支出的所有费用,包括但不限于仲裁费、诉讼费、律师费、差旅费等。
2)任一方未能如期履约时,应每天按未能履约部分的0.05%向对方支付违约金。但支付违
约金并不免除违约方的其他合同义务。
3)如果任何一方没有实现本合同约定而受到本合同对方索赔时,应分清具体责任部分,确
认该部分的责任方。对于利润损失等其他直接或间接损失(包括商务交易中的双方已告知有发生这方面损失的可能性),由各自承担,相互不承担责任。
第十条不可抗力
1)双方因不可抗力的影响不能履行合同,履行合同的时间相应推迟,推迟时间与不可抗力
持续时间相同,合同价格不因此而改变。
2)不可抗力发生后,双方要立即通知对方,并采取必要措施密切配合,以减少影响。
3)不可抗力是指**、台风、地震、水灾等以及双方同意的不可预见的情况。
第十一条通知方式
任何为执行本协议而发出的通知(包括但不限于声明、请求、要求、通知和备忘录等)均应以书面形式作出。双方均负有签收对方发出的通知的义务。如一方拒绝签收,他方仅须提供能够证明其已将有关通知按本协议所列地址交付邮政部门的证据,即可视为有关通知已于交付邮政部门后的第二天送达对方。如一方在收到通知后 三 个工作日内未对对方在通知中陈述的事实或要求提出异议,则应视为该方已承认或接受此等事实或要求。任何一方如变更营业地址,应在此等变更作出后 三 个工作日内通知对方。
第十二条争议的解决
有关本合同的任何争议,双方应本着相互信任、以诚相见的原则,共同协商解决。若经协商不能达成协议时, 可向广州市仲裁委员会提交仲裁。
第十三条合同效力
1)本合同壹式肆份,甲乙双方各执贰份,自双方签字盖章之日起生效。
2)本合同受《中华人民共和国合同法》保护,未尽事宜,均按《中华人民共和国合同法》
规定执行。
3)本合同未尽事宜,双方可另行签订补充协议,补充协议与本合同具有同等效力。第十四条合同附件
本合同附件是合同不可分割部分,一经签署后具有同等法律效力。附件包括:
附件1 《用户需求书》
附件2 《工作说明书》
甲方:
签约代表:
职务:
签字:
乙方:签约代表:职务: 签字:签约日期:
签约日期:
第四篇:软件测试外包揭秘 - 我是一个二手的程序员! - ITeye技术网站
软件测试外包揭秘ITeye技术
网站
这里主要是以赴IBM测试工程师为例,微软,HP等其他外企的测试外包也都大同小异。1.测试外包的分类 测试外包可以分为两种:
一种是甲方公司将项目完全包给乙方公司,由乙方公司完全出人力物力,在乙方所在地完成项目;
一种是甲方公司“借用”乙方公司的员工,同甲方员工一起在甲方公司完成项目项目。
凡是赴某某外企工程师的职位都是属于后者。2.IBM为什么要做测试外包?
可以降低成本和风险,在IBM工作的人分为Regular和Contractor(也称为Vendor),Regular是IBM正式员工。Contractor是合同工,就是我们所说的外包。Contractor不按IBM工资标准,也不享受IBM薪酬福利。假如08年的经济危机真的影响到了中国,IBM大可以释放一部分Contractor来降低成本,而不需要裁自己的正式员工。(好在这件事情对IBM China并没有任何影响),此外,Contractor的各种保险都是由乙方公司也就是外包公司负责的,所以出现什么事情的话,也是由外包公司负责,IBM不需要承担风险。3.Contractor属于IBM员工么?
完全不属于,跟Contractor有关的只是外包你到IBM的外包公司。4.薪酬
其实无论你去哪家外包公司,IBM给外包公司的钱都是固定的。你的薪水和福利待遇,完全看外包公司对你的“剥削程度”。外包公司扣掉给你交的四险一金,运营成本,想要的利润以后,剩下的就是你的工资了。所以,只要你会侃价,去哪家外包公司都一样,工资都会达到一个统一的水平。大概范围是:6500+ 到 8500+,至于怎样从6到8,就全评你个人的专业技术和经验了,这点还是相当的公平。5.福利 在此说明一点,无论去哪家外包公司,4险一金的基数也不会是按照100%来交的,比如你的薪水是7k,那么公司会按照一定的系数来给你交4险一金,有的是按照30%,有的是按照50%。这个才是挑选外包公司的关键。因为有些公司表面给的工资很高,但实际上,4险一金给上的很少,这样的话,其实未必有工资低但福利待遇好的公司划算。因为工资高的话,相应的扣的个人所得税也多了,而如果公司将这部分钱交了住房公积金医疗保险等,这些钱是不需要缴税的,并且你交个人住房公积金医疗保险的同时,公司也是要按照比例交这部分钱的。6.做外包测试的优点 做外包测试的优点不少
第一,你可以接触到很多其他公司接触不到的软硬件产品。比如在IBM,所有的软件我们都是可以在内网中使用的,而AIX,IBM小型机等等,也都很容易搞到。而在微软,我的一个朋友是做Windows7测试的,在微软还没正式发布以前,这些很玄的东东他们就可以上手,这个真是让人羡慕。第二,可以跟同事学到很多技术。在这种大型外企中,你接触到的同时不是名校的博士就是名校的硕士,海归等等,如果想跟他们学点什么的话,没有人会对知识吝啬。第三,会有一些培训。先不说Team的内部同事之间的互相培训,在平时每隔一段时间,也会有很多其他Team的同事会做一些新技术的培训讲座,这些讲座只要你有时间,都是可以去听的。7.做外包测试的缺点
缺点一:做任何事情不可能没缺点的,做外包测试,最大的缺点就是缺少所谓的归属感。因为打你入职那天起,就是在甲方公司工作的,平时根本不需要回外包公司。很多人说看着旁边不是Regular就是其他外包公司来的Contractor,会觉得没有归属感。很多外包公司在这方面做出了努力,比如在你过生日的时候,外包公司会给你订一个大蛋糕送过来;每逢过节都送一些礼品和购物券;组织春游秋游等等。至于这些事情能不能增加归属感,就是仁者见仁,智者见智的事情了。缺点二:很多开源产品在公司是不允许使用的(例如Hibernate,主要就是因为它需要遵循的开源协议),而很多外面平时很常用的软件也没机会再使用(比如MySQL,在IBM一般都用DB2 or Derby)缺点三:对IBM产品产生依赖性会比较麻烦。很多Contractor在IBM都会用Rational Application Developer或者是Rational Softeware Architect,因为它们的功能实在是太强大了。不过我一般还是选择用Eclipse,因为我怕离开IBM的时候,外面没公司买得起这些软件。缺点四:很少有白盒测试。如果你一心想来这些外企做白盒测试,我觉得希望会比较渺茫,因为China这边很少有代码,所以做白盒测试的可能性就小了很多。最多是有时会针对一些API来用JUnit来写一些代码。缺点五:做性能测试的不多,如果你以前是用LR等工具做性能测试的,那么来到这里会没用武之地(可以去HP做外包,LoadRuner是属于它的,我朋友在那里不但会常用,还会有免费培训),因为IBM的性能测试要么是自己写一些脚本,要么就是用Rational Performance Tester。缺点六:不要以为在IBM就会都用功能自动化测试,其实大部分工作都是黑盒手工测试。Rational Function Tester用的机会很少。不过每个Team发展都后期,都会自己写一点Automation Tools,来尽量简化自己的劳动,Shell,Bat脚本,Java程序等等。8.加班
这点是我觉得做外包测试做爽的事情,因为在外企,根本很少加班。(强烈推荐那些加班加得伤心的人来这里疗伤)更爽的是早晚上下班并不需要刷卡,虽然我们也有门卡,但是纯粹是用来开门的,早晚都不需要太在意时间,当别人8点55分在马路上狂奔的时候,你可以悠闲的走着。加班的情况也有两种:
一是项目特别特别紧,而你又没办法按时干完活,这个时候你就可以选择晚上晚走一点,加一会班。(其实每天需要干多少活是从项目一开始Leader就分配好了的,每天需要自己安排,Leader只会在项目快结束的时候才会关注你剩下多少活没有干,所以一般我都选择第二天多干点,坚决按点吃饭呵呵)
再就是跟老外开电话会议,而开会时间是他们的早晨。这种情况的话,需要在公司等到8点半(这段时间是自由的),也就是他们上班,然后开1个小时的会。不过这种电话会议完全可以回家用家里的电话拨免费400上去去听。9.技能要求
不要瞧不起我们这帮被“人贩子”卖掉的人,其实做外包测试,需要的技能还是很高的。很多自称“精通SSH的高手”,就连外包公司的笔试第一关都过不去。但也不要将测试外包想得太难。想做外包测试工程师,无外乎需要满足一下几个条件:
1.本科学历(这个是最低要求,如果是硕士被录取的希望更大点)
2.2年以上Java开发或者Java相关项目测试经验 3.Java基础(相信混Javaeye的这个都没问题)4.有测试相关的经验
5.最好会使用一些Linux基本命令 10.是否有转正的机会 很多人都关心这一点,问是否干了一段时间之后,就转为Regular。转是肯定有转的,但不是每个人都能转,主要看个人的机遇和能力。一般干外包干个2,3年,都会考虑这件事情,要么Team觉得你是有用之才,就留下转了,要么就继续晃荡着,直到你自己选择走人。11.为什么是外包测试,不是外包开发
其实也是有外包开发的职位的,只不过比较少而已。这种大型外企,一般的coding都放在的国外,所以即使是Regular,也是测试工程师居多。一时间只想到了这么多,如果有朋友对哪些问题还有疑问,欢迎回帖,我会以Q&A的方式贴到原文中补充。
第五篇:【黑马程序员】软件项目管理(一)
【黑马程序员】软件项目管理
(一)咱们现在是在学习阶段,慢慢的接触项目这个概念。那么项目是什么?
一个项目的组成,还有期生命周期,项目经理如何管理项目,项目如何分解,每个阶段的产出,都是什么,我们在进入工作前,可以提前了解一下,就能大概体会项目经理的工作内容,也能体谅一个项目所带来的压力。
首先软件项目管理,什么是项目?什么是软件项目? 项目是唯一的,临时的,即在一定的时间内完成。
具体定义:项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。项目的特征: 项目有明确的目标
项目之间的活动具有相关性 限定的周期 有独特性
资源成本的约束性(预算)
项目的不确定性(需求变更、人员变动。。)
说了那么多项目的特征,那么软件项目又有什么特别的吗?
软件项目是一个逻辑实体,相互之间的作用更强,变更会随时发生,以及更深的渐进联系。正是由于软件项目的变更性很强,所以为了确保软件项目的成功,提出了要对软件项目进行管理。
项目管理的定义:项目管理是一系列的伴随着项目的进行而进行的、目的是为了确保项目能达到期望结果的一系列管理行为。
软件项目管理与传统的项目管理之间的比较区别:软件项目的管理除了要对软件项目深入了解,掌握项目管理的知识,还要有相应的经验和技巧
了解了项目管理,现在就来看看必不可少的项目管理知识体系(pmbok)
十大管理:范围管理、时间管理、费用管理、质量管理、人员管理、沟通管理、风险管理、采购管理、集成管理、利益相关者管理 采鉴自传统项目管理,过程的管理如流水线生产生产的产品都是一样的,不同的过程造就不同的产品,那么对于软件项目管理来说,不同的过程一样产生不同的产品,不同的过程造就的产品质量也就不同,那么管理好了过程产品质量也就会相应提升。这里给出过程管理的定义:过程管理就是对过程进行管理,目的是让过程能够被共享、复用,并得到持续的改进。
软件过程管理的过程组:初始、计划、控制、执行、结束
于是我们得到软件项目管理的过程:初始、计划、执行控制、结束
从项目初始开始:包括项目确立和生存期
项目确立分成 项目立项、项目招投标、项目授权
项目立项:确定项目的目标、时间、资源、资金,关键在于得到项目发起人的认可 一个软件项目的立项开始于软件项目的启动,只有立项了的需求才会得到满足
项目招投标:在确认决策为购买时,便要启动项目招投标,过程为甲方招标书定义、乙方项目分析、招标与竞争、合同签署
黑马程序员成都中心 编著
项目授权:项目章程(project charter)表示项目存在
项目授权后项目管理便要开始履行职责 包括:开发计划、组织实施、项目控制
案例总结:某公司发出甲方招标书,然后一些科技公司开始对该招标书进行项目分析,然后向甲方公司发送投标书,由甲方进行选择,拟定合同并签订,中标后乙方收到项目授权书,项目便正式成立
项目成立后便要选择相应的完成项目的策略,即选择项目生存期模型 软件项目生存周期
定义:描述了开发的主要阶段、定义每个阶段完成的过程和活动、确认每个阶段完成的输入和输出
传统生存期模型:预期设计开发的过程
瀑布模型:单向,严格要求项目的步骤,即需求分析、设计、编码实施、测试、维护,管理方便但是不能满足需求变更
V模型:瀑布模型的变种,仍旧为单向执行,对项目需求、方案要求非常明确,以及对安全有特殊要求的项目。
原型:对变化的需求可以进行相应的应对,在需求分析后构造原型,然后对原型进行评估,再构造原型再评估,直到确定项目需求,然后设计最终系统,最后实现。增量模型:需求基本明确,可能发生变化,对于市场和用户需要逐步了解,需要一步步实施。以增量的方式一步步完善系统功能。
渐进式模型:渐进式前进、阶段性提交,优点是阶段性提交一个可运行的产品,关键的功能更早出现,早起预警问题,避免缺陷蔓延,阶段性完成可以降低完成估计错误。敏捷生存期模型(agile development):自适应的过程 敏捷宣言:
个体和交互胜过过程和工具
可以工作的软件胜过面面俱到的文档 客户合作胜过合同谈判 响应变化胜过遵循计划
软件需求管理
软件需求定义:用户对软件功能和性能的要求
软件需求管理过程:需求获取、需求分析、需求规格编写、需求验证、需求变更
变更管理:确定需求变更控制过程、确立变更控制委员会(SCCB)、进行需求变更影响分析、跟踪所有受需求变更影响的工作产品、建立需求基准版本和需求控制版本文档、维护需求变更的历史记录、跟踪每项需求的状态、衡量需求稳定性 软件建模的基本方法:
原型方法:需求分析、原型开发、原型评价
结构化分析法 :面向数据流的方法、自顶向下的分析方法、根据软件内部数据传递、交换的关系进行分析的,包括的技术有数据流图、数据字典、系统流程图
面向对象的用例分析:基于面向对象的情景分析方法、从用户角度出发考虑的功能需求、用例是系统向用户提供一个有价值的结果的某项功能 uml需求视图:用例视图、顺序图、状态图、活动图
功能列表法:将需求各功能以列表的形式列出,可以配合用例分析方法,对用例进行展开描述。
黑马程序员成都中心 编著
敏捷方法:对需求采用渐进明晰的方法进行描述
在敏捷方法中,用户需求被描述成一个个story card,有以下基本格式:as a
软件项目任务分解
任务分解是项目管理的基础
任务分解过程定义:将一个项目分解为更多的工作细目或子项目,使项目变得更小、更易管理、更易操作
WBS任务分解结构:wbs是对项目由粗到细的分解过程,面向交付成果的,wbs组织并定义了整个项目范围
工作包是wbs最低层次的可交付成果 工作包应当由唯一主体负责 任务分解方法:
类比:有相同或相似的周期的项目,可采用类比的方法 模板参照:进行项目分解的时候,有些项目可以参照模板 自上而下:对项目整体有比较详细的了解
自下而上:任务没有非常详细的逻辑关系,想到什么写什么,然后按一定逻辑生成 任务分解步骤:
确认并分解项目的组成要素(WBS编号)确定分解标准 确定分解是否详细
确定项目交付成果(可以编制WBS字典)验证分解的正确性
检验分解结果的标准:
最底层的要素是否是实现目标的充分必要条件 最底层要素是否有重复的 每个要素是否清晰完整定义
最底层要素是否有定义清晰的责任人 是否可以进行成本估算和进度安排
--暂时就说到这里,这里的一切标准都是由各种办法来进行的。跟我们所接触的其他工作都不一样。希望对大家以后的工作有一定的帮助。
黑马程序员成都中心 编著