对日软件外包_第1页
对日软件外包_第2页
对日软件外包_第3页
对日软件外包_第4页
对日软件外包_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章对日软件外包1.1 对日软件外包的发展全球应用软件外包市场近几年平均每年以29%的速度增长,2005年整个市场规模将达到389亿美元。目前全球的软件产值中,三分之一需要通过对外发包来完成。软件外包已经成为世界软件产业发展的一个重要趋势。在这一趋势下,振兴软件产业行动纲要提出,从2001年到2005年,中国软件出口要从年出口7亿美元提升到50亿美元。按照预定的目标,2004年国内软件企业将要完成的出口额将达到35亿美元。这对于中国软件企业而言的确是个不小的数字。为了实现这一目标,有关人士指出,中国企业应积极拓展对欧美软件外包业务,把软件外包做强做大。但现在美国市场主要被印度垄断,欧洲市场被

2、爱尔兰垄断,中国企业的核心竞争力需要较长时间的积累,而对日软件外包,我们则有优势。在对美软件外包市场上,中国软件企业与印度软件企业的差距是明显的,从英文水平到签证难度,从法制制度的不同到对知识产权认识程度的差异,中国软件企业要在对美软件外包市场赶上印度企业还需加以时日。美国IT从业人员中印度和中国人员的比例是31,中国软件企业目前做的外包只占日本软件外包的2%多一点。以英文为主导的软件外包市场正在逐渐萎缩,并且在这个市场上我们和印度相比竞争优势不明显。而对日软件外包市场相对印度来说,中国软件企业有地域优势和有限的语言优势,应当成为国内软件外包企业的发展导向。1.2 对日软件外包的现状对日外包市

3、场潜力巨大,据IDC统计数据,2005年日本IT外包市场规模为164亿美元,而同年我国来自日本的软件发包量约为5.6亿美元,仅占日本IT外包市场的3.4%。IDC预测2008年日本IT外包市场将达到23,363亿日元(约226亿美元,2010年我国对日外包将近40亿美元,占比上升为17.7%。由此可见我国对日软件外包未来的市场潜力巨大。国内现有的对日软件外包企业,主要为面向日本资讯科技行业的客户提供外包软件开发服务,而该等客户其本身又是为日本客户或全球客户提供软件开发服务。也就是一种工程转包性质的开发。以我现在所在公司为例,从事过制造业项目、CAD软件工具、证券金融软件、物流软件等等。1.3

4、对日软件外包的软件开发特点由于外包客户也是多为软件公司或是大公司的软件开发部分,而且由于是外包软件开发,所以开发层次比较低,或者说不是一个完整意思上的软件开发过程。根据个人在对日软件开发公司工作多年的经验,总结以下几点特点:1. 技术含量低,从事低层次工作。通常,软件开发过程都要经历商业建模、需求分析、系统分析和设计、实现、测试和部署等核心流程。然而,对日外包的开发流程被严格划分开来的,外包客户从事商业建模、需求分析、系统分析和设计等高层次的工作,然后将设计书发包到国内,而国内公司仅仅只是严格依据客户的设计书,将其代码实现并通过单体测试就算完工。所以,国内对日外包企业只是担当了实现、测试两个阶

5、段的任务。也有个别项目会担当些简单的设计任务。2. 工期短工作量大由于国内劳动力相对日本国内廉价许多,许多日本IT企业将开发和测试环节移到中国国内,根据客户的功能设计书或详细设计书,完成开发及测试。这样即可以降低软件开发成本,又不至于有太大的开发风险,因为设计是日本人自己完成的。但是,时常会发生因为客户的设计不合理或不详细或理解不同等等客观原因,无法按照原来合同中规定的工数完成任务,所以常常要靠加班来争取时间。3. 品质要求高谁都想花钱买到好东西,软件外包也是一样,日本公司也想花钱买到更好的客户,具体体现就是提供优质的代码成果物。然而,由于软件企业的流动性比较大,公司出于成本考虑,常会雇佣一些

6、经验不足的实习人员直接投入项目开发中,导致品质较低,而为了弥补品质上问题,又需要用加班的方式来争取大量时间提高质量。4. 文档要求高有些日本客户公司,实施了CMM3或更高级别的控制标准,同样也要求中国的外包公司按照其标准实施,当然这样对于国内公司自身管理能力也是一种提高。但是,有些客户公司过于注重文档,而忽视了对于最更本的代码的重视程度。第2章RUPRUP是Rational统一过程(Rational Unified Process的简称,它是Rational公司(现归属IBM公司推出的一种软件过程产品。从软件过程模式角度看,RUP又是一种典型的软件过程模式,它以迭代增量式、架构为中心、用例驱动

7、的软件开发方法、采用UML语言描述软件开发过程为主要特征,其中以用例驱动乃是贯穿软件开发始终的方法。2.1 RUP的特点1. 迭代式开发。在软件开发的前期阶段完全并准确的掌握用户全部的需求几乎是不可能的。实际上,经常遇到,需求在整个软件开发工程中会不断改变,从而使得软件项目难于管理而产生较大风险。而迭代的开发方式允许在每次迭代过程中需求有所变化,通过不断细化来加深对问题的理解,最终实现完全满足用户需求的软件。迭代式开发不仅可以降低项目的风险,而且使得软件开发过程具备较强的控制性。2. 管理需求。完善用户需求是一个渐进的过程,开发人员在开发系统之初不可能完全详细的说明一个系统的真正需求。RUP描

8、述了如何提取、组织系统的功能和约束条件并将其文档化,用例和脚本的使用以被证明是捕获功能性需求的有效方法。3. 基于组件的体系结构。组件使重用成为可能,系统可以由组件组成。基于独立的、可替换的、模块化组件的体系结构有助于管理复杂性,提高重用率。RUP描述了如何设计一个有弹性的、能适应变化的、易于理解的、有助于重用的软件体系结构。4. 可视化建模。RUP和UML结合在一起,对软件系统建立可视化模型帮助人们提供管理软件复杂性的能力。RUP告诉我们如何可视化的对软件系统建模,获取有关体系结构于组件的结构和行为信息。5. 验证软件质量。在RUP中软件质量评估不再是事后进行或单独小组进行的分离活动,而是内

9、建于过程中的所有活动,这样可以及早发现软件中的缺陷。6. 控制软件变更。迭代式开发中如果没有严格的控制和协调,整个软件开发过程很快就陷入混乱之中, RUP描述了如何控制、跟踪、监控、修改以确保成功的迭代开发。RUP通过软件开发过程中的制品,隔离来自其他工作空间的变更,以此为每个开发人员建立安全的工作空间。2.2 RUP的核心工作流RUP中有9个核心工作流,分为6个核心过程工作流(Core Process Workflows和3个核心支持工作流(Core Supporting Workflows。尽管6个核心过程工作流可能使人想起传统瀑布模型中的几个阶段,但应注意迭代过程中的阶段是完全不同的,这

10、些工作流在整个生命周期中一次又一次被访问。9个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和强度重复。1. 商业建模(Business Modeling描述了如何为新的目标组织开发一个构想,并基于这个构想在商业用例模型和商业对象模型中定义组织的过程,角色和责任。2. 需求(Requirements描述系统应该做什么,并使开发人员和用户就这一描述达成共识。为了达到该目标,要对需要的功能和约束进行提取、组织、文档化;最重要的是理解系统所解决问题的定义和范围。3. 分析和设计(Analysis & Design将需求转化成未来系统的设计,为系统开发一个健壮的结构并调整设计使其与实现环境相

11、匹配,优化其性能。分析设计的结果是一个设计模型和一个可选的分析模型。设计活动以体系结构设计为中心,体系结构由若干结构视图来表达,结构视图是整个设计的抽象和简化。4. 实现(Implementation包括以层次化的子系统形式定义代码的组织结构;以组件的形式(源文件、二进制文件、可执行文件实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(或小组所产生的结果,使其成为可执行的系统。5. 测试(Test验证对象间的交互作用,验证软件中所有组件的正确集成,检验所有的需求已被正确的实现,识别并确认缺陷在软件部署之前被提出并处理。RUP提出了迭代的方法,意味着在整个项目中进行测试,从而尽可

12、能早地发现缺陷,从根本上降低了修改缺陷的成本。6. 部署(Deployment成功的生成版本并将软件分发给最终用户。描述了那些与确保软件产品对最终用户具有可用性相关的活动,包括:软件打包、生成软件本身以外的产品、安装软件、为用户提供帮助。7. 配置和变更管理(Configuration & Change Management描绘了如何在多个成员组成的项目中控制大量的产物。配置和变更管理工作流提供了准则来管理演化系统中的多个变体,跟踪软件创建过程中的版本。描述了如何管理并行开发、分布式开发、如何自动化创建工程。同时也阐述了对产品修改原因、时间、人员保持审计记录。8. 项目管理(Project M

13、anagement平衡各种可能产生冲突的目标,管理风险,克服各种约束并成功交付使用户满意的产品。其目标包括:为项目的管理提供框架,为计划、人员配备、执行和监控项目提供实用的准则,为管理风险提供框架等。9. 环境(Environment环境工作流的目的是向软件开发组织提供软件开发环境,包括过程和工具。环境工作流集中于配置项目过程中所需要的活动,同样也支持开发项目规范的活动,提供了逐步的指导手册并介绍了如何在组织中实现过程。2.3 RUP裁剪步骤RUP是一个通用的过程模板,包含了很多开发指南、制品、开发过程所涉及到的角色说明,由于它非常庞大所以对具体的开发机构和项目,用RUP时还要做裁剪,也就是要

14、对RUP进行配置。RUP就像一个元过程,通过对RUP进行裁剪可以得到很多不同的开发过程,这些软件开发过程可以看作RUP的具体实例。RUP裁剪可以分为以下几步:1 确定本项目需要哪些工作流。RUP的9个核心工作流并不总是需要的,可以取舍。2 确定每个工作流需要哪些制品。3 确定4个阶段之间如何演进。确定阶段间演进要以风险控制为原则,决定每个阶段要那些工作流,每个工作流执行到什么程度,制品有那些,每个制品完成到什么程度。4 确定每个阶段内的迭代计划。规划RUP的4个阶段中每次迭代开发的内容。5 规划工作流内部结构。工作流涉及角色、活动及制品,他的复杂程度与项目规模即角色多少有关。最后规划工作流的内

15、部结构,通常用活动图的形式给出。第3章改进方案虽然,对日软件外包工程往往不是一个完整的软件开发过程,只是其中一部分或几部分而已,但是并不妨碍RUP在对日外包项目中发挥强大的作用。上一章节中,分析了如何根绝具体项目特性,对RUP过程进行裁剪,以适应不同的软件项目。本章节将依据裁剪步骤,结合现在公司的项目特点,细化制定适当的RUP开发过程。.1 确定工作流对日软件外包,通常是根据客户的功能需求书或详细设计书,完成代码实现和测试。所以只需要实现和测试两个工作流。结合我公司现在从事项目的特点,简单阐述一下各工作流。1. 实现由于对日外包的特殊性,面对客户基本都是日本的IT企业,现阶段都处于较低层次,也

16、就是只负责代码实现和测试,可能也会从事部分简单设计。所以,根据客户的设计书完成符合要求的代码就是对日外包的主要工作任务。所以实现工作流也是最重要的工作流。而且,由于是根据日方的设计从事开发实现,所以除了实现本身的任务外,还有承前的工作要完成,比如:理解设计书的要求,开发环境搭建,判断设计中可能存在的不合理性等。而这些问题都可能直接影响到最后是否能顺利完成实现的工作任务。2. 测试判断开发的代码是否能交付,也就是依靠测试用例了,我方只担任单体测试部分的任务,并将全部通过测试的代码和测试用例书作为成果物交付给日方。如果,由于单体测试内容不全面,而在结合测试中发现的问题,将作为Bug报告,再由担当者

17、修正后提交。以上讲的两个工作流,是现在多数对日外包公司承担的主要任务,当然也有部分公司可能承接的项目是个完整的软件过程,涉及到9个工作流中的绝大多数,在此不作重点依次展开。其实各个项目,由自身特点可以制定出自己的 RUP 软件过程。只要实用就是最好。 3.2 各工作流的职责和制品 由于是委托开发, 客户为了有效控制开发过程和质量, 往往是通过各种文档来对项目进 行管理和控制。对日外包开发中,文档的分类比较繁多,规格要求也根据不同公司有不同的 要求。以下列举几种文档,在整个开发过程中起俄作用: 1. 功能设计书 用户提出委托开发要求,中方根据功能设计书,了解所开发项目的所有需求,并估计工 数和项

18、目报价,如果对方客户对报价没有异议,就正常进入开发实施阶段。开发小组成员开 始一起研究功能设计,解决理解和实现技术上的所有问题,尽可能避免因设计书理解不足, 而导致项目失败。 2. 详细设计书 结合实现技术的特点, 通常, 客户是不提供详细设计书, 而是开发团队根据功能设计书, 完成详细设计书,作为实现工作流的前期成果物,交付日方 Review 确认,只有通过 Review 后才能进入到正式的开发实现阶段。 3. 代码规约 为加强代码具有良好的可读性, 需要通过在开发前期就作好代码规范的教育工作, 规范 的代码才能有效提交代码的品质。 4. 开发环境构建步骤说明书 外包开发通常客户是将完整的项

19、目拆分成多个相对独立的模块, 分别发包给一个或多个 外包开发公司开发, 所以需要提供详细完善的开发环境构建说明书, 便于开发团队尽快熟悉 环境完成开发任务。 5. 代码 代码程序当然是所有制品中最重要的, 其质量直接影响到项目的成功与否。 由于是委托 开发, 全部都是根据客户提供的功能设计书来完成代码开发的, 所以往往可能因为设计书理 解不足,或设计书内容存在错误等外部因素影响代码的质量。而一旦存在疑问时,就应该及 时通过 QA 方式向日方确认。最后在完成全部代码实现后,需要和日方一起 Review 全部代 码。总之,项目成败就取决于代码的质量如何了。 6. 代码目录结构说明书 此文档只是一个

20、说明性的文档, 用说明各个代码文件的目录结构, 编译环境的设置等相 关具体内容。方便客户拿到代码文件后能尽快确认代码的正确性。 6 7. 测试用例书 测试用例书也是整个开发过程中又一个关键, 也是保证代码质量的一种有效手段。 通常 分为正常系和异常系两大类测试用例, 判断程序的正常执行结果是否符合需求, 是否具有一 定的判错能力等。与代码一样,测试用例书也是需要提交日方客户 Review 确认后,再能进 入测试阶段的。 8. 测试数据 测试过程用到的所有数据,可能因为测试数据的局限性导致有些 Bug 没有被发现,那 就可以依据现有的测试数据内容判断测试是否全面而且有效了。 9. 测试结果书 依

21、据测试用例书,对最终的代码程序进行测试,并全部确认无误后,填写测试结果书提 交给日方客户。 10. 辅助工具报告 为了保证代码的质量,通常还会使用一些自动化测试工具,对性能,漏洞,规范等方面 进行测试,根据测试的结果报告,尽可能修正后,将最终的报告书也需要提交给日方客户。 3.3 4 个阶段的划分 RUP 将整个开发过程划分成初始、细化、构造、交付四个阶段。每个阶段中都包含着 多个工作流,只是工作的重点不同,同时还包含着复数个迭代过程。迭代次数和划分时间也 许无法事先预计,但是可以大致规划,再根据具体情况,灵活变动修改的。以下将以四个阶 段为单位分别展开阐释。 1. 初始 初始阶段主要完成的任

22、务是:掌握功能设计书,熟悉开发环境,估算项目工数和规模。 似乎初始阶段的任务并不难, 但是其估算结果的正确与否会影响到最后的实现情况。 所以需 要全面而准确的了解功能需求,才能避免过大的偏差。初始阶段相对任务比较轻,一般一次 迭代就能完成。在此迭代过程中也可以尝试实现部分代码,了解具体的项目难度,以便准确 的估算。 2. 细化 细化阶段主要任务是:作成详细设计书和测试用例书,并完成部分代码的实现。详细设 计书和具体实现方法是有密切联系的, 所以应该在写详细设计书的同时编写并测试通过部分 代码,以验证设计的可行性。而现在多数项目中存在的问题是,大家并不能意识到迭代开发 比如, 详细设计时, 也会尝试调查, 的重要性, 还不能掌握迭代开发的手段规避和控制风险。 但是调查时候写的代码可能并不是最后要交付的代码,可以认为那是一定程度上的资源浪 7 费。所以应该加强开发团队在细化阶段是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论