对软件外包项目中甲方外包管理的思考(一)——人员外包和项目外包

一、概述

在软件外包项目中,甲方(发包商)通过资金或其它资源获取乙方(承包商)的开发服务,以达成其软件需求目标。为了让外包项目按时按质按量完成,甲方需要做好项目的采购管理外包管理,其中采购管理的核心是选择合适的供应商、签订合同,外包管理的核心是过程监控、项目验收。按照外包项目采用的形式和管理方法的不同,可以将外包项目分为项目外包人员外包[1]。

  • 项目外包

甲方将项目的需求和范围要求发给乙方,候选乙方对此进行报价,然后进行实地考察和分析确认,当甲方认为乙方符合承担条件后,将项目需求和技术资料发给乙方,进行软件开发[1]。项目研发过程涉及的需求、设计、编码、测试、上线、系统支持等项目活动全部由乙方承担。项目外包适合缺少相关专业人员的甲方。

  • 人员外包

甲方负责项目的组织和管理,雇佣乙方的相关人员参与项目研发的中间环节。常见的人员外包的形式是雇佣乙方的开发人员进行编码工作,人员外包适合拥有具备需求分析、项目管理、技术管理等相关能力的专业人员的甲方。

近期笔者以甲方项目负责人的身份参与我司一个内部系统的外包项目,项目前期以"项目外包"的形式进行,后期以"人员外包"的形式进行。在本文中笔者将结合项目经历对项目外包、人员外包中外包管理的异同、注意要点进行简要的说明。

二、项目外包

笔者在接手项目时, 项目已经进入开发阶段。获取到的项目资料仅仅只是短短几句的项目文档、项目外包合同。通过对业务进行调研,和业务人员沟通,阅读相关文档发现该项目在的规划、需求阶段存在着很大的不足,进而导致了很严重的项目后果。通过对该阶段项目进行复盘,笔者认为在项目立项项目规划需求分析项目验收阶段甲方的外包项目管理需要注意以下几点:

1. 明确项目干系人

什么是项目干系人?

项目干系人又称项目利益相关者,是指积极参与项目实施或完成的,或其利益可能受项目实施或完成情况产生积极或消极影响的个人或组织(如客户、发起人、执行组织或公众),识别干系人是一个持续性的过程[2]。通常参与项目的角色有项目发起人、项目业务方、项目经理、设计人员、开发人员、测试人员等,受项目影响的角色有成果拥有者、系统使用者等。

在本次的项目过程中,由于在项目规划阶段漏掉了一个重要的业务方,而且笔者因为缺乏干系人的资料导致没有及时干涉,进而导致了项目成果不能满足所有业务方的需要。因此在项目规划阶段明确干系人的人员组成、优先级、期望点,是保障项目定位、需求来源的准确性的必要途径,是进入项目需求阶段的基础

2. 合理的项目团队组织

项目团队组织包括人员安排、任务划分、沟通协作项目确认。合理项目团队组织能够明确人员职责,监控项目进程,及时发现问题,降低项目进度和质量失控的风险。在笔者没有介入该项目的前期,乙方项目经理直接和业务需求人员进行沟通,由于业务需求人员缺乏专业知识,导致需求设计不完善、项目节点不合理、项目资源提供不及时等诸多问题。同时在整个项目过程中缺乏正式有效沟通协调机制,导致对进度没有清晰的掌控,无法确认乙方是否充分投入资源。因此笔者认为合理的项目组织需要做到以下几点:

  • 安排专业人员作为项目对接人

合格的项目对接人需要了解软件开发知识,熟悉项目开发流程,善于交流,又了解业务知识。项目对接人负责对软件外包项目全过程进行全面的监控和协调,以期更好地消除由于信息不对称所产生的一系列项目进度和质量风险,确保软件外包各方能够更有效地履行合同[3]。

  • 建立项目进度跟踪机制

建立项目进度跟踪机制的目的是监督外包项目的进展情况,确认项目实际进度与合同规定的时间进度表是否相符,评估乙方投入的开发资源是否充分。项目进度跟踪通常以会议、邮件、即时聊天等约定的交流形式定期检查,频率至少1周一次。通过乙方定期提供的项目相关信息,来确认阶段任务完成情况、总结项目问题,检查实际进度是否延迟,评估项目进行的风险,并讨论相关解决方案。

3. 不可忽视项目的非功能需求

非功能需求是系统需求的重要组成部分,是影响用户使用体验、产品能否提供高效稳定服务的关键。常见的非功能需求包括性能需求、安全需求、集成需求、可靠性需求、兼容性需求、易用性需求等。在本次外包项目过程中,由于忽略了非功能需求导致了多个项目失误,比如管理后台没有对接单点登录,同时在线用户过多服务器瘫痪,因此在项目规划时不能忽视对非功能需求的需求分析。然而非功能的定义很抽象,如何清晰准确的描述非功能需求是非功能需求分析的关键。通常对于非功能需求的描述是通过量化业务指标、详细具体的规则进行说明,常用到的如下:

  • 性能需求

对于前台的系统而言,通常以“响应时间”上进行定义,并具体到的某个业务场景[4]。需求描述举例如下[5]:

  • 定位系统从点击到第一个界面显示出来所需要的时间不得超过300毫秒。
  • 在非高峰时间根据编号和名称特定条件进行搜索,可以在3秒内得到搜索结果。

对于后台的业务管理系统来说,通常以“整体能力上来定义”,并具体到某个业务场景[4]。常见的业务指标包括“并发量、资源使用率、业务量、系统容量”等等[4]。需求描述举例如下[5]:

  • 系统可以同时满足10,000个用户请求,并为25,000个并发用户提供浏览功能。
  • CPU占用率<=50%,内存占用率<=50%。
  • 数据库表行数不超过100万行,数据库最大容量不超过1000GB,磁盘空间至少需要40G以上。
  • 可扩展性需求

系统的可扩展性就是考虑系统未来为了追加新功能是否方便,便宜,能够满足未来业务量增长的需要。定义扩展性需求时要确定系统的生命周期,然后分析在系统生命期内,业务量变化情况,压力增长情况,以此分析出来的结果,作为扩展性需求,进行定义[4]。系统可扩展可以从系统性能、系统功能两个方面进行考虑,其基本要求是功能扩展时不需要对系统的基础架构进行改动,性能扩展不通过任何代码的更改。在描述系统性能的可扩展需求时应结合性能需求,举例如下:

  • 系统可以在未来需要的情况下,不通过任何代码的更改,对系统性能进行提升,使之中心系统每秒钟能记录25个以上的考勤记录[4]。

系统功能的可扩展性体现在需求分析与设计阶段是否能有效识别系统可变的需求,不能停留在可扩展的基本原则上,要落实对一个一个功能的分析中,以提供出合理的方案[6]。从业务设计的角度来说,模块化、可复用、较少依赖或耦合是可扩展的原则。

  • 集成需求

企业内部系统存在多个业务系统,系统之间集成和整合的需求就是集成需求。集成需求主要包括数据对接(系统之间的数据交换和信息传递)、单点登录(多个独立系统统一账号和登录认证)、系统融合( 将多个系统融合在一个系统中,统一账号、权限、应用的管理,最终以一个独立的软件系统存在)[7]。需求描述举例如下:

  • 某某图书管理系统采集##库存管理系统的数据包括库存数据、订单数据。
  • 某某课程管理系统通过与EHR系统实施集成,实现相关基础数据(组织机构、用户数据等)的共享,实施统一身份认证和统一登录界面。
  • 内训管理后台融合到社区管理后台中,统一账号、权限、功能的管理。
  • 兼容性需求

一般对于前台系统而言,都需要考虑其兼容性。目前最为广泛的前台系统是手机客户端、web端,在考虑系统的兼容性时主要前台的适用平台有哪些,需求描述举例如下。

  • 系统仅支持chrome浏览器,不考虑移动端适配。
  • 移动端需要兼容的操作系统IOS6以上、Andriod6.0以上。
  • 易用性需求

易用性和产品的用户体验相关,是一组规定或者潜在的用户为使用其软件所需做的努力和对这样的使用所作的评价有关的一组属性[8]。衡量易用性的标准是用户对于系统功能是否容易理解、是否容易学习、是否容易操作,需求描述举例如下:

  • 80%的用户经过培训后,可在5分钟内完成课程创建。
  • 90%的用户完成建课后,需要在5s内知道下一步需要进行什么操作,如课程上线、编辑、查看详情等。

4. 合理的项目里程碑安排

项目里程碑安排就制定项目计划,是对项目的进度管理、目标管理,是进度跟踪的关键。项目里程碑就是通过识别项目的软件活动,以软件活动完成时间节点作为项目里程碑。具体的项目计划安排由乙方产品经理负责,甲方需要进行评审,判断其合理性。
在此次项目中,由于项目的阶段划分、开发计划制定都没有进行严格的审核,项目过程虽然按照业务需求划分成两个阶段,但是没有做相关的阶段验收计划,因此笔者增加了项目阶段验收的环节。项目第一阶段的计划周期过短,中间有法定假日的影响,虽然乙方组织开发人员进行加班,但是只有web端完成,追赶进度的同时导致了严重的质量问题。由于移动端采用的技术方案是以SDK的形式嵌入公司的移动OA应用中,在项目集成过程中产生了严重的类库冲突问题,阻碍了项目进展。因此合理项目计划安排、计划实施过程中需要考虑以下几点:

  • 提前预估项目风险

在进行项目规划的时候,要充分地平台项目进展过程中可能遇到的风险,针对这些风险制定相应的规避措施,对于容易产生风险的项目任务,需要预留充足的时间。

  • 项目任务的工期要符合项目开发实际

在很多时候乙方为了中标会向甲方承诺工期,然而实际开发的结果往往会是不能按时交付、完成质量不能满足客户期望。因此对应甲方对接人在乙方完成需求分析后,根据需求规格说明书评审乙方的项目开发计划,如果发现不合理需让乙方调整,确认计划无误后须进行冻结。

  • 划分子项目

对应涉及多终端、多业务需求的大型项目,可根据业务需求的优先级、系统终端类型,划分多个子项目进行多次验收多次交付,一个阶段没有完成不能进入下一阶段,项目通过多次迭代完成上线验收。采用这种方式能够降低项目风险,提高项目完成质量。

三、人员外包

在此次项目的人员外包阶段,外包的开发人员异地开发,因此项目过程中如何协调异地开发人员的开发工作,如果保证需求沟通中无阻碍,就是人员外包面临主要问题。复盘此次的项目经历,笔者认为人员外包需要注意以下几点:

###1. 和乙方项目经理沟通

在项目过程中可能会出现外包人员工作配合度不高,需要安排外包人员加班处理某些任务等问题。遇到这些问题时首先要和乙方的项目经理进行沟通反应问题,或者在告知外包人员的同时告知乙方项目经理。

###2. 统一的项目协作平台

通过在线的项目协作平台,能够方便团队成员直接进行沟通,便于项目经理对项目任务协调和控制,同时记录项目需求、项目决策、需求变更等重要内容。笔者参与的外包项目采用的在线协作平台是wiki+redmine的形式,wiki记录项目需求、项目人员、项目里程碑、会议纪要等内容,redmine进行任务分配、任务跟踪、bug管理。

四、总结

软件项目外包管理涉及到很多流程,甲方从项目立项到选择承包商,再到签订合同、跟踪监控,最后成果验收,乙方从项目竞标到竞标成功 ,再到系统策划、需求分析、系统设计、编码测试,最后提交验收,整个项目从开始到收尾,甲方乙方其实是合作者,为了共同的项目目标而走到一起的,虽然整个过程中,难免会遇到很多问题,踩很多坑。
笔者结合自身的项目经验总结了一些要点,希望能对大家在进行外包项目能够有所帮助,减少弯路,其中难免会有不足之处,请大家批评指正。

参考资料

[1] 杨曙贤, 王军辉和张爱国. 软件外包概论. 普通高等教育软件工程“十二五”规划教材. 人民邮电出版社, 2015.
[2](美)项目管理协会.项目管理知识体系指南(PMBOK指南)第四版.北京:电子工业出版社,2009:23-24.
[3] 王梅源. 软件外包项目全过程风险管理. 华中科技大学出版社, 2009.
[4] 非功能需求定义与测试.百度文库, 2011.
[5] 常见非功能性需求的描述案例.CSDN博客, 2018.
[6] [我们应当怎样做需求分析:非功能需求.ITeye博客, 2012.]
(https://www.iteye.com/blog/fangang-1497941)
[7] 软件系统集成与整合的常见方式.百度文库, 2018.
[8] 电子工业部标准化研究所.GB/T 16260-1996 信息技术 软件产品评价 质量特性及其使用指南.

### 回答1: 个人软件外包合同模板 doc 是一份供个人软件开发者和外包商之间签订合作协议的模板文件。该文件通常包括以下方面的内容: 1. 合同目的与范围:明确合同签订的目的以及外包服务的具体范围,例如软件开发、维护、测试等。 2. 双方权利义务:详细列出双方的权利和责任,例如开发者应按要求进行软件开发并保证质量,外包商应支付开发者费用并提供所需资源。 3. 价格与支付方式:约定开发者的报酬以及支付方式,例如按项目分期支付或按工时计费等。 4. 保密条款:明确双方在合作过程应保守对方商业机密和敏感信息的义务,以确保双方的合作安全。 5. 知识产权:确保软件开发者在完成任务后,将软件的知识产权归外包商所有或在合理范围内进行授权。 6. 不可抗力条款:约定双方在不可抗力情况下的责任和义务,并承认因此而导致的合同违约情况。 7. 合同终止方式:规定合同终止的条件和方式,例如双方协商一致、任一方违约等。 8. 争议解决方式:如遇到合同履行的争议,约定通过友好协商、调解或仲裁解决。 作为一个模板文件,具体合同可能会根据实际合作情况进行修改和补充。为确保双方权益,建议在签订合同之前,双方应仔细审查合同内容,并在理解并满意后签订生效。 ### 回答2: 个人软件外包合同模板 doc是一种用于规范个人软件外包合作关系的文件。该模板包含了必要的条款和条件,确保双方的权益得到保护和维护。 首先,该模板应包括基本信息,例如合同的双方当事人的姓名、联系方式和地址等。这有助于明确合同的签署对象,避免发生纠纷和误解。 其次,该模板应明确双方的责任和义务。具体来说,合同应规定外包人员需要完成的具体工作内容、交付时间和质量要求等。同时,合同还应规定甲方对于外包人员提供合理的技术支持和必要的资源,并且在必要情况下提供培训。 第三,合同应规定报酬和支付方式。其,应明确外包人员的报酬标准、计算方式和支付周期等。此外,还应规定双方的付款方式和结算方式,确保双方的财务安全。 最后,合同应涵盖违约责任和争议解决条款。在违约责任方面,应明确违约一方应承担的法律后果和补偿责任等。在争议解决方面,可以约定合同纠纷通过协商、仲裁或诉讼等方式解决。 总之,个人软件外包合同模板 doc是一种用于规范个人软件外包合作关系的模板文件。通过明确双方的权益和责任,有助于保障合同的顺利执行和维护双方的利益。需要根据具体情况和需求进行适当的修改和补充。 ### 回答3: 个人软件外包合同模板 usually refer to the template of a contract between an individual software developer and a client who wishes to outsource their software development needs. Below is a brief outline of the key elements that are typically included in such a contract: 1. 定义和描述 - 合同必须明确定义双方的身份、公司名称以及主要联系人。同时,还需要对外包项目进行详细描述,包括项目的目标、范围和时间表。 2. 费用和付款方式 - 合同应明确规定软件开发所需的费用以及付款方式。这可能包括人工成本、项目里程碑的支付要求以及额外的费用(如旅费或材料费)。 3. 知识产权 - 合同应包含有关知识产权归属的规定。通常情况下,软件的知识产权应归属于客户,而软件开发人员只能获得有限的使用和访问权。 4. 保密条款 - 为了保护双方的商业利益,合同通常会包含保密条款,禁止软件开发人员将客户的商业机密泄露给第三方。 5. 双方责任 - 合同应明确软件开发人员和客户的责任。这可能包括软件开发者按时提交进度报告、客户提供所需的信息和资源等要求。 6. 变更和解约条件 - 合同应包括变更和解约的条件。这些条件可能包括双方如何通知对方、是否需要支付违约金以及解约后需要遵守的义务等。 7. 法律适用和争议解决 - 合同应明确约定法律适用的管辖法院,并规定争议解决的方式,如通过调解、仲裁或诉讼解决。 这些只是个人软件外包合同模板通常包括的主要内容。实际上,每个合同都应根据具体的项目和双方需求进行定制和调整,以确保合同的准确性和合法性。建议在签署合同之前寻求法律专业人士的帮助,以确保合同符合当地法律法规。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值